2

クライアントがフィールドを常に必須にすることを望んでいるメンバー管理ページがあり、ユーザーがメンバーである場合、それは電子メールアドレスでなければなりません。アカウントが管理者用の場合は、電子メールである必要はありません。私が最初に考えたのは、「フィールドが必要な場合に行うのと同じように簡単に function() を実行できる」ということでした。

JQuery 検証プラグインを使用しています。これが問題の行です。

ename: { required: true, email: function() { var retVal = ($("#mem_rights").val() == 4); alert(retVal); return retVal; }},

アラートはデバッグ コードであり、関数が正しく評価されていることを示しています。管理ページを表示すると false と評価されますが、値を電子メール アドレス以外にすると、入力ボックスの横に「有効な電子メール アドレスを入力してください」というエラー メッセージが表示されます。

私は何をする必要がありますか?

4

2 に答える 2

1

残念ながら、ルールはありませんがrequired、デフォルトで依存関数または式を取ります。

これは、デフォルトのルールを上書きするemail(または独自に選択した名前でルールを追加する)ことで、依存関係関数を使用する方法の1つです。

var oldEmail = $.validator.methods.email;

$.validator.addMethod("email", function(value, element, param) {
    return !param || oldEmail.call(this, value, element);
});

$("#test").validate({
    rules: {
        field: {
            required: true,
            email: {
                depends: function () {
                    return $("#require-email").is(":checked");
                }
            }
        }
    }
});

例: http: //jsfiddle.net/rvsDs/

デフォルトのルールを上書きするemailことに不安がある場合(有効な懸念事項)、新しいルールconditionalemailなどに名前を付けることができます。

于 2011-12-23T17:34:36.557 に答える
0

ドキュメントによると、required属性は依存関係式または依存関係コールバックにすることもでき、条件付き要件を実行するために使用できます。あなたはおそらくこのようなものを書くことができます:

ename: {
  required: function(el) {
    return $("#mem_rights").val() == 4;
  }
}

値が変更されていない場合でも、関数は必要ありませんが、次のように式を評価するだけです。

ename: { required: ($("#mem_rights").val() == 4) }
于 2011-12-23T17:12:03.400 に答える