2015-05-15 2 views
0

У меня есть 2 texbox, первый имеет время начала второго, и пользователь должен ввести время окончания как в этом формате (00:00:00). Как я могу запретить пользователю вводить значение во втором текстовом поле ниже первого, поэтому конечное время должно превосходить время начала, это сообщение должно предупредить его. вот мои коды:Запретить пользователю вводить большее значение в текстовое поле

<input type="text" name="StartTime" id="StartTime" size="30"  
value="<?php echo $tab['StartTime'];?>" readonly="readonly" /></td></tr> 
<tr><td> 
<label>End Time</label> 
</td> 
<td> 
<input type="text" name="EndTime" id="EndTime" value="00:00:00" 
max="23:00" size="30" required pattern="[0-2][0-9]:[0-5][0-9]: 
[0-5][0-9]" title="Please enter end time this format 
(00:00:00),maximum value is: 23: 59: 59"/></td></tr> 

Если время начала, например, 08:00:00 и пользователь вводит 7:00:00 сообщение должно появиться, чтобы предупредить его. Спасибо

+0

Ну, вы, кажется, использует рамки проверки уже? Также вы можете захотеть взглянуть на вход типа HTML5 = время. – plalx

+2

Возможный дубликат [Javascript - проверка диапазона дат] (http://stackoverflow.com/questions/13780881/javascript-date-range-validation) – abc123

+0

Эта система проверки предназначена для предотвращения ввода пользователем часа, например, 56:80:76 , более высокое значение 23:59:59. –

ответ

0

Проверка выполняется, когда пользователь/фокус покидает одно из текстовых полей после его изменения. Но вы можете вызвать его в любое время.

HTML:

StartTime: 
<input type="text" name="StartTime" id="StartTime" size="30" value="08:00:00" /> 
<br> 
<br> 
EndTime: 
<input type="text" name="EndTime" id="EndTime" size="30" value="16:00:00" /> 

JavaScrip:

function validateEndTimeGreaterStartTime() { 
    var valueStartTime = document.getElementById('StartTime').value; 
    var valueEndTime = document.getElementById('EndTime').value; 
    return Date.parse('01/01/2015 ' + valueEndTime) > Date.parse('01/01/2015 ' + valueStartTime); 
}; 

var elementStartTime = document.getElementById('StartTime'); 
var elementEndTime = document.getElementById('EndTime'); 
elementStartTime.onchange = function() { 
    if (!validateEndTimeGreaterStartTime()) { 
     alert("EndTime should be greater than StartTime"); 
    } 
}; 
elementEndTime.onchange = function() { 
    if (!validateEndTimeGreaterStartTime()) { 
     alert("EndTime should be greater than StartTime"); 
    } 
}; 

JSFiddle: https://jsfiddle.net/Lz60s0gp/

+0

Большое вам спасибо за ваши коды, это так помогает, однако я хотел бы отображать сообщение, а не красить, когда пользователь вводит конечное время, меньшее времени начала. Для этого в этой части кода elementEndTime.onchange = function() i заменить elementEndTime.style.color = "red"; по предупреждению («Время окончания должно быть больше, чем время окончания») ;. К сожалению, сообщение не всплывает. У вас есть идея? –

+0

Я обновил код, чтобы отразить ваше поведение. но помните, что проверка выполняется только тогда, когда один из входов потерял фокус после его изменения. если вы хотите в любой момент запрограммировать его, вы должны снова вызвать валидацию в этой точке (например, при отправке формы). – Jan

+0

@PropheteBaptiste только что проверил код еще раз, и он хорошо работает в настольных браузерах. У вас все еще есть проблемы с этой частью вашего кода? Если ваша проблема решена, не забудьте принять ответ. рассматривает ян – Jan

Смежные вопросы