Не то, чтобы производительность обычно имеет значение с 99% времен, необходимо сделать это, но если бы необходимо было сделать это в цикле несколько миллионов раз, то я высоко предложил бы, чтобы Вы использовали.Equals или ==, потому что, как только это находит символ, который не соответствует ему, выводит все это как ложь, но если Вы используете CompareTo, это должно будет выяснить, который символ является меньше, чем другой, ведя к немного худшему времени производительности.
, Если бы Ваше приложение будет работать в разных странах, я рекомендовал бы, чтобы Вы смотрели на последствия CultureInfo и возможно использовали.Equals. Так как я только действительно пишу приложения для США (и не заботьтесь, не работают ли они правильно кем-то), я всегда просто использую ==.
<HTML>
<Head>
<script language="javascript">
function validateTime(obj)
{
var timeValue = obj.value;
if(timeValue == "" || timeValue.indexOf(":")<0)
{
alert("Invalid Time format");
return false;
}
else
{
var sHours = timeValue.split(':')[0];
var sMinutes = timeValue.split(':')[1];
if(sHours == "" || isNaN(sHours) || parseInt(sHours)>23)
{
alert("Invalid Time format");
return false;
}
else if(parseInt(sHours) == 0)
sHours = "00";
else if (sHours <10)
sHours = "0"+sHours;
if(sMinutes == "" || isNaN(sMinutes) || parseInt(sMinutes)>59)
{
alert("Invalid Time format");
return false;
}
else if(parseInt(sMinutes) == 0)
sMinutes = "00";
else if (sMinutes <10)
sMinutes = "0"+sMinutes;
obj.value = sHours + ":" + sMinutes;
}
return true;
}
</script>
</Head>
<Body>
<input type="text" onblur="validateTime(this)">
</Body>
</HTML>
Как насчет
function validTime(inputStr) {
if (!inputStr || inputStr.length<1) {return false;}
var time = inputStr.split(':');
return time.length === 2
&& parseInt(time[0],10)>=0
&& parseInt(time[0],10)<=23
&& parseInt(time[1],10)>=0
&& parseInt(time[1],10)<=59;
}
Вы можете использовать что-то вроде jQuery.maskedit
.