在 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: function() {
return $("#username").val();
}
而不仅仅是:
username: $("#username").val()
我已经尝试了这两种方法,果然第二种方法没有分配 username:
值。
我确实在remote
方法函数中的jQuery Validate代码中设置了一个断点:
remote: function(value, element, param) {
...
}
尝试了解这里发生的事情,但我真的一无所知。
最佳答案
jQuery.fn.validate(config)
用于设置验证规则,而不是实际执行验证。整个 {rules:/* */}
对象会在发生这种情况时准确评估。
如果包含
$('#username').val()
在规则对象中,将立即计算该表达式,并保存此时元素的值。
如果你通过了
function() {
return $('#username').val();
}
作为值,当 remote
validator 时将评估此函数当jQuery.param
时被调用并进行AJAX调用。将 data
属性展平为字符串。
请注意,此验证器将其整个配置对象合并到它进行的每个 AJAX 调用中,因此普通 ajax 设置对象中可接受的所有其他选项都可以通过这种方式设置,而不仅仅是 data
。
关于javascript - 为什么 jQuery Validate "remote:"验证需要一个函数来设置数据值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781856/