gpt4 book ai didi

javascript - 为什么jQuery Validate "remote:"验证需要一个函数来设置数据值?

转载 作者:行者123 更新时间:2023-11-29 18:27:17 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com