2

string email 2 つのフィールドとファイルを持つフォームを検証しようとしてい file typeます (2 つのうちの 1 つが必須です)。次のコードでフォームを検証しています。

$("#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',
            }
        }
    });

このコードは両方のフィールドを検証しています (しかし、私にとっては、2 つのフィールドのいずれかに値がある場合、つまり電子メールまたは csv ファイルであれば、フォームは有効です)

親切に私を助けてください、このコードの何が問題なのですか

4

2 に答える 2

1

OPのコメントを引用

「返信ありがとうございます。私はすでにこれを試しました。console.debug($("#emails").is(':empty'))ステートメントの前にreturnステートメントを追加すると、 が返されるたびにtrue. 同じことが . に対して発生しcsvます。」

requiredそれぞれのルールが空のルールに依存する2 つのフィールドがある場合、タイミングの問題があります... 1 つのフィールドを満たしても、エラーをクリアするためにもう 1 つのフィールドで検証を再トリガーする必要がある場合があります。

ただし、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 に答える