在jQuery Validate文档中,它显示了使用远程验证调用将其他值传递给服务器端验证脚本/资源的示例:
http://docs.jquery.com/Plugins/Validation/Methods/remote#code
以下是示例代码:
$("#myform").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}
}
}
});
为什么我需要使用函数来设置username
数据参数?:
username: function() {
return $("#username").val();
}
而不仅仅是:
username: $("#username").val()
我已尝试过两种方法,果然第二种方法没有为username:
赋值。
我确实在remote
方法函数的jQuery Validate代码中设置了一个断点:
remote: function(value, element, param) {
...
}
尝试了解这里发生的事情,但我真的不是更明智的。
答案 0 :(得分:3)
jQuery.fn.validate(config)
用于设置验证规则,而不是实际执行验证。完整地评估整个{rules: /* */ }
对象。
如果你包括
$('#username').val()
在rules对象中,将立即计算该表达式,并保存该时刻的元素值。
如果您改为传递
function() {
return $('#username').val();
}
作为值,当remote
validator将data
属性展平为字符串时,将在调用jQuery.param
并进行AJAX调用时评估此函数。
请注意,此验证器将其整个配置对象合并到它所进行的每个AJAX调用中,因此可以通过这种方式设置普通ajax设置对象中可接受的所有其他选项,而不仅仅是data
。