JQuery验证自定义方法错误
我有一个奇怪的JQuery验证错误和一个自定义方法。出于某种原因,每次更改字段时,validate方法都会激发3-4次。因为某种原因它在循环,我不知道为什么。验证器可以工作。唯一的问题是它不能与datepicker一起工作。我必须在datepicker中单击两次以获取要更改的输入值。似乎jquery验证正在劫持datepicker输入或其他东西。我在这一点上一无所知,我会接受任何想法 自定义方法:JQuery验证自定义方法错误,jquery,jquery-validate,jquery-ui-datepicker,Jquery,Jquery Validate,Jquery Ui Datepicker,我有一个奇怪的JQuery验证错误和一个自定义方法。出于某种原因,每次更改字段时,validate方法都会激发3-4次。因为某种原因它在循环,我不知道为什么。验证器可以工作。唯一的问题是它不能与datepicker一起工作。我必须在datepicker中单击两次以获取要更改的输入值。似乎jquery验证正在劫持datepicker输入或其他东西。我在这一点上一无所知,我会接受任何想法 自定义方法: $(document).ready(function () { $.validator.
$(document).ready(function () {
$.validator.addMethod("laterDate", function(value, element) {
var id = "#" + element.id;
var id_number = element.value.charAt(element.length - 1);
alert(id_number);
if(id_number == "1"){
alert("in if")
var id_value = $(id).fieldDate();
var today = new Date();
alert(id_value > today);
return id_value > today;
}
else{
alert("in else")
var prev_id_number = String(parseInt(id_number) - 1);
var prev_id = "#end_date_" + prev_id_number;
var prev_id_value = $(prev_id).fieldDate();
var id_value = $(id).fieldDate();
return id_value > prev_id_value;
}
}, $.format("Enter a later date"));
});
验证程序代码为:
$(document).ready(function () {
$("#rate_new_new").validate({
debug: true,
rules: {
"rates[start_date_1]": {dateITA: true, maxlength: 50},
"rates[end_date_1]": {dateITA: true, maxlength: 50, laterDate: true},
"rates[price_1]": {testPrice: true}
},
messages: {
"rates[start_date_1]": {
dateITA: "Please enter a valid date",
maxlength: "The name must be less than 50 characters"
}
},
submitHandler: function(form) {
$(form).ajaxSubmit({
success: function(){
$('#lefttabs li:eq(4) a').tab('show');
}
});
}
});
});
您的代码中有一些错误,例如缺少行尾和
String
语句(我想您的意思是.toString()
),下面是您的固定代码:
$(document).ready(function() {
$.validator.addMethod("laterDate", function(value, element) {
var id = "#" + element.id;
var id_number = element.value.charAt(element.length - 1);
alert(id_number);
if (id_number == "1") {
alert("in if");
var id_value = $(id).fieldDate();
var today = new Date();
alert(id_value > today);
return id_value > today;
}
else {
alert("in else");
var prev_id_number = (parseInt(id_number) - 1).toString();
var prev_id = "#end_date_" + prev_id_number;
var prev_id_value = $(prev_id).fieldDate();
var id_value = $(id).fieldDate();
return id_value > prev_id_value;
}
}, $.format("Enter a later date"));
});
你在用JqueryUIDatePicker吗 然后,尝试以下方法:
$('#yourid').datepicker({
onSelect: function(dateText, inst) {
$(this).blur();
}
});
这段代码没有改变任何东西:(.每次更改它仍然会循环3-4次。哦,值得一试。你有演示吗?不确定这是否有用,但我随上面的帖子一起更改了它,现在它按预期工作。非常感谢!