2

我正在尝试验证具有两个字段 string emailfile type文件的表单(两者之一是强制性的)。我正在使用以下代码验证表单,

$("#addOrganizationMembersForm").validate({
        rules : {
            csv : {
                required : "#emails:empty",
                extension: "xls|csv"
            },
            emails : {
                required : "#csv:empty"
            }
        },
        messages : {
            csv : {
                required : 'Upload a csv or xls file',
                extension : 'Only csv files are allowed',
            },
            emails : {
                required : 'Enter one or more comma seperated emails',
            }
        }
    });

此代码正在验证两个字段(但对我而言,如果两个字段之一具有值,即电子邮件或 csv 文件,则表单有效)

请帮助我,这段代码有什么问题

4

2 回答 2

1

引用 OP 的评论

“感谢 rohan 的回复。我已经尝试过了,问题是如果我在console.debug($("#emails").is(':empty'))语句之前添加语句return,则每次返回时都会true发生同样的情况csv。”

当您有两个字段,其中required每个字段的规则都依赖于另一个字段为空时,就会出现时间问题......您满足一个字段但随后您可能必须重新触发另一个字段的验证以清除错误。

但是,如果您包含additional-methods.js文件,则可以只使用require_from_group已经完全符合您要求的规则。(必须使用插件版本 1.11.1 或更高版本

$("#addOrganizationMembersForm").validate({
    rules: {
        csv: {
            require_from_group: [1, '.mygroup'],
            extension: "xls|csv"
        },
        emails: {
            require_from_group: [1, '.mygroup']
        }
    },
    messages: {
        csv: {
            require_from_group: 'Upload a csv or xls file',
            extension: 'Only csv files are allowed',
        },
        emails: {
            require_from_group: 'Enter one or more comma seperated emails',
        }
    }
});

工作演示:http: //jsfiddle.net/h9WpL/

于 2013-10-09T17:14:45.507 回答
1

尝试这个,

$("#addOrganizationMembersForm").validate({
     rules : {
            csv : {
                required : function(){
                              return $("#emails").is(':empty')
                           },
                extension: "xls|csv"
            },
            emails : {
                required : function(){
                              return $("#csv").is(':empty')
                           },
            }
        },
于 2013-10-09T11:43:53.300 回答