jquery - 如何获取基于 JQuery 远程类的验证规则的值和元素?

标签 jquery validation

我正在尝试编写一个规则来使用远程查找来验证多个动态添加的输入。我不知道如何获取远程规则定义中正在验证的字段。例如:

$.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/

相关文章:

javascript - javascript 在 switch 中返回 false 后仍在发回

jquery - 重置按钮状态

javascript - 使用 typescript/knockout 的 JQuery 对话框未打开

validation - 验证struts 2中的双字段

ruby-on-rails - 用于验证 Google map 纬度经度的 Rails 正则表达式

javascript - 表单验证 - 如何跟踪多个字段以防止提交 - 全局变量?

forms - 在触发取消按钮之前激活 Angular 表单验证

php - Codeigniter 分页和 JQuery 操作

javascript - jQuery each() 图像宽度

jquery - 如何为元素设置动画同时更改其不透明度?