我正在尝试编写一个规则来使用远程查找来验证多个动态添加的输入。我不知道如何获取远程规则定义中正在验证的字段。例如:
$.validator.addClassRules({
refDataAcInput: {
remote: {
url: "/json/refDataLookup.html",
type: "get",
data: {
groupName: function(a,b,c){
//$(this).data("groupName");
//THE ABOVE DOESN'T WORK, HERE I WANT TO GET THE VALUE OF THE FIELD BEING VALIDATED
},
term: function(a,b,c){
//$(this).val();
//THE ABOVE DOESN'T WORK, HERE I WANT TO GET THE VALUE OF THE FIELD BEING VALIDATED
},
exactMatch: "true"
},
dataFilter: function(data, type) {
return data;
},
success: function(data, textStatus, jqXHR) {
alert(textStatus);
}
}
}
});
我该怎么做?
最佳答案
我真的很喜欢你的想法,但是你想做的事情不能像现在这样使用 addClassRules 来完成。问题并不在于 jQuery Validate,而更多在于 jQuery.ajax 在生成数据时的工作方式。数据对象中的这些函数不会通过上下文调用(即,this
按您的预期填充)。 jQuery 代码如下所示:
value = jQuery.isFunction( value ) ? value() : value;
我相信这是有道理的,因为 $.ajax 通常使用的方式,它可以访问局部变量,这样就无关紧要了(即在调用 $.ajax 之前,您只需创建数据你想要的对象)。对于验证的情况,您唯一的选择可能是使用 remote
提供的数据,即输入名称作为键,输入的值作为值(即 fieldName:value
)并修改您的远程脚本来处理该问题。
如果由于您需要 groupName
数据而无法选择此选项,则可以考虑编辑 source code 。在这种情况下我要做的是更改这一行(github 中的 L1024):
data[element.name] = value;
对此:
data = $(element).data();
data[element.name] = value;
这会将附加到您的元素的任何 jQuery.data
值推送到您的 ajax 请求中。
关于jquery - 如何获取基于 JQuery 远程类的验证规则的值和元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597286/