我注意到,有时我的验证码有误:
var $validator = $("#checkoutForm").validate();
...
if (!$validator.element($sameShippingAddress)) {
...
}
使用Firebug进行调试显示,有时$ validator.element($ sameShippingAddress)将返回undefined(我猜它只是不等到响应被返回)并且假定为false,即使元素有效。
如果在if语句之前添加这样的代码,一切正常:
while (validator.element($sameShippingAddress) !== undefined) {
}
问题是,如果这是正确的解决方案,并没有更好的方法来处理验证插件本身的问题?
更新:我正在使用http://bassistance.de/jquery-plugins/jquery-plugin-validation/
答案 0 :(得分:1)
无限循环验证器变量不是一个好选择。而是使用下面的代码利用Javascript计时器。您可以在validate()方法之后显示动画处理/服务器响应图形。
var validator = $('#resetpassword').validate({///your code...})
doTimer();
function timedCount()
{
t=setTimeout("timedCount()",1000);
}
function doTimer()
{
if (validator === undefined)
{
timedCount();
}
}
if(validator==true)
$('#form').ajaxSubmit(options);
答案 1 :(得分:1)
很难说你是如何处理成功提交的,或者你是否使用css类来表示必填字段,但以下是如何在插件的demo中完成:
$.validator.setDefaults({
// code to be executed on submit
submitHandler: function() { alert("submitted, replace this with your server request");}
});
$().ready(function() {
// validate the comment form when it is submitted
// use css class .required for fields you want the validator to check
// if your form is valid then it is handled by the submitHandler
// if not the plugin displays error messages
$("#checkoutForm").validate();
//validate can take a block for custom validation and error messages
});
希望这可以帮助你找到一个解决方案,而不仅仅是更多相同(也只是意识到这个问题是一年之久,但我已经写了这个......)
答案 2 :(得分:0)
很明显,这不是最好的解决方案。而是添加
if(!$ validator.element($ sameShippingAddress)){
...
}
在Ajax回调函数中。