以下代码检查用户是否在文本框中插入了正确的时间表示法。 如果符号不正确,将显示警告框。
如果忘记了前导零(即7:45 iso 07:45),它也会显示警告
function validateThis(e){
//INPUT VALIDATION
var regexp = /([01][0-9]|[02][0-3]):[0-5][0-9]/; //CORRECT TIME FORMAT
var correct = (e.value.search(regexp) >= 0) ? true : alert('Enter time as hh:mm (13:25)');
}
我的问题是,如果忘记而不是通知用户,我如何自动插入前导零
答案 0 :(得分:2)
您可以将数字(如果是字符串,将其转换为数字)与10进行比较,如果它小于10,则添加零,否则,保持原样:
注意:您只需将字符串拆分为冒号并检查其有效性,无需使用正则表达式。
function leadZero(n) {
return +n < 10 ? "0" + n : n; // +n in case of string, +n converts it to a number
}
function validateThis(e) {
var hhmm = e.value.split(':'); // split into hh, mm
// if there are two values (hh, mm) and
// 0<=hh<=23 and 0<=mm<=59 => correct time
if (hhmm.length === 2 && (+hhmm[0]>=0 && 23>=+hhmm[0]) && (+hhmm[1]>=0 && 59>=+hhmm[1])) { // valid date
var correct = true;
// add leading zeros
// fix hour fix minute
var newTime = leadZero(hhmm[0]) + ':' + leadZero(hhmm[1]);
console.log(newTime);
} else {
alert('Enter a valid time only');
}
}
<input type="text" onchange="validateThis(this)">
答案 1 :(得分:1)
您可以尝试以下方法:
function verify()
{
var str=$("#time").val();
var patt = new RegExp("^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$");
if(patt.test(str))
{
if(str.length==4)
$("#time").val("0"+str);
console.log("true");
}
else
console.log("false");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" name="time" id="time" value="" />
<input type="button" name="sbmt" id="sbmt" value="Submit" onclick="verify();">
答案 2 :(得分:0)
在你的帮助下,我制作了以下内容:
function validate(e) {
var regexp = /([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]/;
if ((e.value.search(regexp) >= 0)) {
e.value.length == 4 ? document.getElementById(e.id).value = '0' + e.value : 0;
} else {
alert('Time is not entered correctly, enter like hh:mm');
}
}
<div>
<label for="name">Time</label>
<input id="lbl3" class='input' type="text" onchange="validate(this);">
</div>
答案 3 :(得分:-1)
首先,您应该更改正则表达式,以便能够使用和不使用前导零来验证这两种情况。 如果输入有效,您可以使用提供的解决方案或任何其他解决方案修改输入。