Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery要验证;遥控器:;验证是否需要一个函数来设置数据值?_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript 为什么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

在jQuery验证文档中,它显示了一个使用远程验证调用将附加值传递给服务器端验证脚本/资源的示例:

以下是示例代码:

$("#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
时的初始值。