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
        }
    }
});