jQueryvalidation器和datepicker点击不validation

我使用jqueryvalidation器来validation文本输入。 我遇到的问题是,如果我点击提交它会正确显示所有错误消息。 但是,在datepicker输入上,要清除错误消息,我必须选择两次datepicker。 即; 1单击以选择并正确输入数据。 第二次单击以清除错误消息。

我在某处读过有关在datepicker上使用’on’事件的内容,所以我试过了,但没有区别。 我不认为这是正确的编码。 我假设无效和成功类是validation器脚本的一部分。 值得一试。

这可能发生什么。 谢谢

Sciprt代码

 $(function() { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, yearRange: '2011:2037', dateFormat: 'dd/mm/yy', minDate: 0, defaultDate: null }).on('changeDate', function(ev) { if($('#datepicker').valid()){ $('#datepicker').removeClass('invalid').addClass('success'); } }); });  

HTML代码

  

validation器相关代码

规则/消息部分

  datepicker: { required: true, date: true }, datepicker: { required: " * required: You must enter a destruction date", date: "Can contain digits only" } 

引用OP:

“我必须选择两次日期选择器。即; 1点击选择并正确输入数据。第二次点击清除错误信息。”

那是因为validation通常是在keyupblur事件上触发的。 由于您使用日期选择器与字段而不是键盘进行交互,因此您正在干扰正常的触发事件。

你的代码应该补偿,但过度杀戮……

 $(function() { $("#datepicker").datepicker({ ... }) .on('changeDate', function(ev) { if($('#datepicker').valid()){ $('#datepicker').removeClass('invalid').addClass('success'); } }); }); 

只要值发生变化,您只需要在字段上调用.valid()方法。

 $(function() { $("#datepicker").datepicker({ ... }) .on('changeDate', function(ev) { $(this).valid(); // triggers the validation test // '$(this)' refers to '$("#datepicker")' }); }); 

但是,这与以前基本相同。

什么是changeDate应该是什么? 这是由你的datepicker插件定义的吗? 那不是标准的jQuery事件,很可能是整个问题。 请尝试标准change事件….

 $(function() { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, yearRange: '2011:2037', dateFormat: 'dd/mm/yy', minDate: 0, defaultDate: null }).on('change', function() { $(this).valid(); // triggers the validation test // '$(this)' refers to '$("#datepicker")' }); }); 

Sparky的回答对我来说很有用,我唯一要改变的就是使用id,我只是在on函数中使用了jquery,即:

  .on('change', function() { $(this).valid(); }); 

这只是让它更通用.. -D

如果您正在使用Jquery Form Validator( http://www.formvalidator.net/ )并且您想使用bootstarp datepicker,那么只需将class =“hasDatepicker”添加到input元素。它对我有用。