我目前有一个表单,我正在使用jQuery验证器插件进行验证。在表单中,我有一个字段,根据输入的另一个字段,是否需要。
<select name="supportiveServices" id="supportiveServices" style="float: left; margin-left: 20px; width: 30%;">
<option value="">Select One</option>
<option value="Accepted">Accepted</option>
<option value="Declined">Declined</option>
</select>
<input name= "serviceStartDate" id= "serviceStartDate" type="date" style="width: 50%;"></input>
的jQuery
serviceStartDate: {
required: function(element) {
if($("#supportiveServices").val() == 'Accepted') {
return true;
}
else {
return false;
}
},
},
这种依赖性要求似乎工作正常,但我一直遇到的问题是我需要日期才有效。我添加了一种确保日期有效的方法。
jQuery.validator.addMethod("DateFormat",
function(value, element) {
return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
},
"Please enter a date in the format dd/mm/yyyy";
);
我是这个插件的新手,但我尝试了以下两个解决方案,两个都返回true并需要输入:
创建一个函数,如果日期为空则基本返回true,否则返回false。
serviceStartDate: {
required: function(element) {
if($("#supportiveServices").val() == 'Accepted') {
return true;
}
else {
return false;
}
},
DateFormat: function(element) {
if($("#serviceStartDate").val() != 0 || $("#serviceStartDate").val() != null || $("#serviceStartDate").val() != undefined || $("#serviceStartDate").val() != '') {
return true;
} else {
return false;
}
}
},
创建单独的方法。
jQuery.validator.addMethod("DateFormatSupport",
function(value, element) {
if ($("#serviceStartDate") == 0 ) {
return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
}
},
"Please enter a date in the format dd/mm/yyyy"//removed ;
);
并调用它。
serviceStartDate: {
required: function(element) {
if($("#supportiveServices").val() == 'Accepted') {
return true;
}
else {
return false;
}
},
DateFormatSupport: true
}
},
我基本上需要验证器来确保如果客户没有选择&#34;接受&#34;对于支持服务,serviceStartDate可以是可选的。如果&#34;接受&#34;选择支持服务时,需要填写serviceStartDate,日期也需要有效。作为预防措施,我想如果他们在serviceStartDate中填写任何内容,无论是否是可选的,都是一个日期 - 这将转到数据库,因此它必须为null或日期。
有什么建议吗?
答案 0 :(得分:0)
我想如果他们填写
serviceStartDate
中的任何内容,无论是否可选,都是约会......有什么建议吗?
您只需要在日期字段中声明内置date
规则,同时使required
规则依赖于您已经完成的select
元素。在这种情况下不需要自定义规则。也没有必要使date
规则成为条件,因为只要可选字段留空,所有规则都会被自动忽略。
rules: {
supportiveServices: {
required: true
},
serviceStartDate: {
required: function(element) {
return ($("#supportiveServices").val() == 'Accepted') ? true : false;
},
date: true
}
}
备注强>:
我使用ternary shorthand作为条件...这是一行代码替换六行。
没有input
容器 这样的内容,所以我删除了结束</input>
标记,但没有存在为有效的HTML。