Javascript 为什么jQuery要验证;遥控器:;验证是否需要一个函数来设置数据值?
在jQuery验证文档中,它显示了一个使用远程验证调用将附加值传递给服务器端验证脚本/资源的示例: 以下是示例代码:Javascript 为什么jQuery要验证;遥控器:;验证是否需要一个函数来设置数据值?,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,在jQuery验证文档中,它显示了一个使用远程验证调用将附加值传递给服务器端验证脚本/资源的示例: 以下是示例代码: $("#myform").validate({ rules: { email: { required: true, email: true, remote: { url: "check-email.php", type: "post", data: { usern
$("#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()
我已经尝试了这两种方法,可以肯定的是,第二种方法没有分配用户名:
值
我确实在remote
方法函数中的jQuery验证代码中设置了断点:
remote: function(value, element, param) {
...
}
试图了解这里发生了什么,但我一点也不明白。用于设置验证规则,而不是实际执行验证。整个{rules://**}
对象将在发生这种情况时进行精确计算
如果包括
$('#username').val()
在rules对象中,将立即计算该表达式,并保存该时刻的元素值
如果你通过了
function() {
return $('#username').val();
}
将数据
属性展平为字符串时,将在调用和进行AJAX调用时计算此函数作为值
请注意,该验证器将其整个配置对象合并到它所做的每个AJAX调用中,因此可以通过这种方式设置普通AJAX设置对象中可接受的所有其他选项,而不仅仅是使用数据来设置验证规则,而不是实际执行验证。整个{rules://**}
对象将在发生这种情况时进行精确计算
如果包括
$('#username').val()
在rules对象中,将立即计算该表达式,并保存该时刻的元素值
如果你通过了
function() {
return $('#username').val();
}
将数据
属性展平为字符串时,将在调用和进行AJAX调用时计算此函数作为值
请注意,该验证器将其整个配置对象合并到它所做的每个AJAX调用中,因此可以通过这种方式设置普通AJAX设置对象中可接受的所有其他选项,而不仅仅是数据不是很早调用验证(cfg)
,只是为了设置规则(与实际执行验证的时间相反)?如果是这样,在计算这个配置对象时,该字段可能没有任何值
在第二个示例中,输入错误?在对象文字语法中加一个分号,如data:{username:$(“#username”).val()}
返回一个语法错误,但您可能已经注意到了情况是否如此。@Fabriciomatté-是的,很抱歉,在编写问题时我犯了错误。正如@DCoder所说,存储函数
对象将执行它,并在每次执行验证时将元素的当前值返回到ajax数据,而存储字符串
可能会存储为调用时的初始值。validate
不是很早调用的验证(cfg)
,仅设置规则(与实际执行验证的时间相反)?如果是这样,在计算这个配置对象时,该字段可能没有任何值
在第二个示例中,输入错误?在对象文字语法中加一个分号,如data:{username:$(“#username”).val()}
返回一个语法错误,但您可能已经注意到了情况是否如此。@Fabriciomatté-是的,很抱歉,在编写问题时我犯了错误。正如@DCoder所说,存储函数
对象将执行它,并在每次执行验证时将元素的当前值返回到ajax数据,而存储字符串
可能会存储为调用.validate
时的初始值。