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通常是在keyup
和blur
事件上触发的。 由于您使用日期选择器与字段而不是键盘进行交互,因此您正在干扰正常的触发事件。
你的代码应该补偿,但过度杀戮……
$(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元素。它对我有用。