jQuery验证 - 将JS移动到外部文件和传递字段

时间:2009-08-27 22:55:24

标签: javascript jquery jquery-validate

我试图在我的视图中清理一些JavaScript,我想做的一件事就是将我的jQuery Validation代码移到外部脚本函数中并传入对我需要处理/验证的字段的引用。我面临的问题是如何格式化jQuery Validate规则字段的签名:

$("#form").validate({
    rules: {
        txtNoSpam: {
            remote: WebSettings.SpamFilterValidationUrl
        }
    },
    messages: {
        txtNoSpam: {
            remote: "Answer is incorrect."
        }
    },
});

在上面的代码中,'txtNoSpam'直接映射到我页面上名为txtNoSpam的元素,但我宁愿将txtNoSpam作为对象传递给我的初始化函数,然后使用提供的对象的元素名称将验证映射到正确的字段作为参数名称:

function Init(form, field1)
    form.validate({
        rules: {
            field1.attr('name'): {
                remote: WebSettings.SpamFilterValidationUrl
            }
        },
        messages: {
            field1.attr('name'): {
                remote: "Answer is incorrect."
            }
        },
    });
}

有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

尝试逐步构建验证选项,以便使用[]。 见下面的例子:

function my_validate(field_name) {
   var opts = {rules:{},messages:{}};
   opts.rules[field_name] = {remote: WebSettings.SpamFilterValidationUrl};
   opts.messages[field_name] = {remote: "Answer is incorrect."};
   form.validate(opts);
}

更新: 考虑到您更新的问题,这里是Init:

function Init(form, field1)
   var opts = {rules:{},messages:{}};
   opts.rules[field1.attr('name')] = {remote: WebSettings.SpamFilterValidationUrl};
   opts.messages[field1.attr('name')] = {remote: "Answer is incorrect."};
   form.validate(opts);
}