如何在 ajax 中使用 && 验证时间
How to validate time using && in ajax
我正在使用时间验证,我对如何使用 &&validate
start_time
和end_time
感到困惑。到目前为止,我有这段代码:
var re = /^('d{1,2}):('d{2})([ap]m)?$/;
//Start Time
if($('.start_time').val() != '') {
if(regs = $('.start_time').val().match(re)) {
if(regs[3]) {
// 12-hour value between 1 and 12
if(regs[1] < 1 || regs[1] > 12) {
$('.start_time_error').html('<div>Invalid value for hour(s)</div>');
$('.start_time').focus();
return false;
}
} else {
if(regs[1] > 12){
$('.start_time_error').html('<div>Invalid value for hour(s)</div>');
return false;
}
}
// minute value between 0 and 59
if(regs[2] > 59) {
$('.start_time_error').html('<div>Invalid value for minute(s)</div>');
$('.start_time').val().focus();
return false;
}
} else {
$('.start_time_error').html('<div>Invalid time format</div>');
$('.start_time').focus();
return false;
}
$('.start_time_error').html('<div>Checked</div>');
return true;
}else{
$('.start_time_error').html('<div>Please fill up</div>');
return false;
}
//End time----------
if($('.end_time').val() != '') {
if(regs = $('.end_time').val().match(re)) {
if(regs[3]) {
// 12-hour value between 1 and 12
if(regs[1] < 1 || regs[1] > 12) {
$('.end_time_error').html('<div>Invalid value for hour(s)</div>');
$('.end_time').focus();
return false;
}
} else {
if(regs[1] > 12){
$('.end_time_error').html('<div>Invalid value for hour(s)</div>');
return false;
}
}
// minute value between 0 and 59
if(regs[2] > 59) {
$('.end_time_error').html('<div>Invalid value for minute(s)</div>');
$('.end_time').val().focus();
return false;
}
} else {
$('.end_time_error').html('<div>Invalid time format</div>');
$('.end_time').focus();
return false;
}
$('.end_time_error').html('<div>Checked</div>');
return true;
}else{
$('.end_time_error').html('<div>Please fill up</div>');
return false;
}
我尝试了类似的东西:
if(regs = $('.start_time').val().match(re) && regss == $('.end_time').val().match(re) )
但它对我不起作用,它发送并错误regss is not defined
.关于如何做到这一点的任何替代方案?谢谢!
我认为你把事情复杂化了......考虑关注点分离。在您的逻辑中,您有 2 个主要块、时间字符串验证和 DOM 操作以提取这些值并打印错误。在当前的代码中,您为两个字段重复相同的逻辑两次,为什么不将其抽象为函数呢?
那么我认为不值得打印多个错误,如果时间无效,那么说"您输入了无效的时间"之类的内容,并让用户知道正确的格式,在输入中或一般错误消息中使用占位符。
如果你遵循这个建议,你可能会减少很多代码,使代码更清晰,更容易理解。这是一个例子,我从这个问题中改编了正则表达式:
function isTime(str) {
return /^([1-9]|1[012]):[0-5][0-9]'s*?(am|pm)$/i.test(str);
}
现在,您可以像这样验证输入:
var start = $.trim($('.start_time').val())
, end = $.trim($('.end_time').val());
if (!isTime(start) || !isTime(end)) {
$('.generic_error').html('<div>Please enter a valid time (HH:MM AM/PM)</div>');
}
不确定您的 HMTL,但这应该可以全面了解如何抽象您的代码以使其干燥(不要重复自己(。
演示:http://jsbin.com/ayAbUyI/1/edit
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- jQuery工具验证器自定义效果-添加&消除影响
- 使用javascript&自定义验证器检查开始日期和结束日期
- 单选按钮的验证(启用)&使用Jquery Optimization从复选框中选择submit按钮
- 输入验证&使用javascript或asp返回
- Jquery&Ajax表单验证功能
- 表单验证和提交时提交文本&输入按钮上带有验证的图像
- Firefox加载项验证提供了document.write&innerHTML错误
- 验证文本框&运行另一个函数javascript
- 使代码变短&表单验证
- Ionic&Angular JS表单验证在占位符中显示消息
- JQuery表单验证&按钮波纹
- 无法验证表单是否已用CasperJS&jQuery
- REGEXP的JavaScript中的标题验证,可以采用字母数字,也可以采用特殊字符[,/()&-:.space
- 我如何验证一个文本框,它应该只允许字符a-Z&a-z,不是整数也不是特殊字符
- 引导验证程序&图像选取器-如果选择了两个可用的选择输入中的任何一个,如何验证表单
- Facebook连接,验证一个网站., amp;和,
- 如何验证只接受第一个字母作为字符&在javascript中保留为数字
- 验证&Web服务的验证规则
- javascript表单验证不适用于chrome&FF