jquery验证插件用于检查日期,但不检查其占位符文本
我有占位符值的输入,例如:jquery验证插件用于检查日期,但不检查其占位符文本,jquery,validation,date,jquery-validate,Jquery,Validation,Date,Jquery Validate,我有占位符值的输入,例如: <input type="text" name="mydate" value="yyyy-mm-dd"> 基本上,您遇到了一个问题,因为占位符文本只是输入框中的一个值,它“模仿”占位符功能。您可能会在单击时将其删除,如果用户清空输入框的内容,则将其带回来,当然要进行验证调整,以不验证占位符是否为真实值,等等 相反,您可以使用html5的属性;) 在标记中使用占位符属性将解决您的问题,因为它不是实际值,而是真正的占位符,其功能应该是正常的。顺便说一句,你的
<input type="text" name="mydate" value="yyyy-mm-dd">
基本上,您遇到了一个问题,因为占位符文本只是输入框中的一个值,它“模仿”占位符功能。您可能会在单击时将其删除,如果用户清空输入框的内容,则将其带回来,当然要进行验证调整,以不验证占位符是否为真实值,等等
相反,您可以使用html5的属性;) 在标记中使用占位符属性将解决您的问题,因为它不是实际值,而是真正的占位符,其功能应该是正常的。顺便说一句,你的javascript也有语法错误。我已经在我的答案中修复了它们
<input type="text" name="mydate" placeholder="yyyy-mm-dd" />
$(document).ready(function(){
$("form.myclasstovalidate").validate({
rules: {
mydate: {
date: true
}
}
});
});
$(文档).ready(函数(){
$(“form.myclasstovalidate”).validate({
规则:{
我的日期:{
日期:对
}
}
});
});
无论出于何种原因,如果您不想使用占位符
属性,可以使用创建自定义规则。这也是关于如何创建新规则的一个很好的教训,即使OP采取了另一种方法
由于您声明只希望在值不是“yyyy-mm-dd”
时进行date
验证,因此我只添加了一个条件,根据元素的值检查输入的值,并将默认的date
方法/规则代码放在其中
jQuery.validator.addMethod("mydaterule", function (value, element) {
if (value != element.defaultValue) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
} else {
return true;
}
}, 'please enter a valid date');
您可以根据需要进一步调整它
按如下方式应用新规则:
$('#myform').validate({
rules: {
mydate: {
mydaterule: true
}
}
});
演示:
重要注意事项:“yyyy-mm-dd”
格式不正确,无法满足默认的日期
规则。但是,“yyyy/mm/dd”
将起作用
e、 g
- 2013-02-28验证将失败
date
- 2013/02/28将通过日期验证
$('#myform').validate({
rules: {
mydate: {
mydaterule: true
}
}
});