2

私は、クライアントがフィールドが常に必要となるようなメンバー管理ページを持っています。そのメンバーがメンバーの場合、電子メールアドレスでなければなりません。アカウントが管理者のためのものであれば、電子メールである必要はありません。私の最初の考えは、「フィールドが時々必要とされるときのように、簡単な機能()」でした。JQueryの検証プラグインには、特定のケースでメールが必要です

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

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

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

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

答えて

1

残念ながら、ないルールが、requiredをデフォルトで依存関係関数または式をとります。

デフォルトのemailルールを上書きする(または自分が選択した名前でルールを追加する)ことで、依存関係の機能を果たすことができます。

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または似たような名前を付けることができます。

+0

私はカスタムメソッドの名前を変更しましたが、それはそれでした。その後、メッセージを追加しました。完璧! –

0

ドキュメントによれば、required属性は、dependency expressionまたはdependency callbackでもかまいません。これを使用して条件付きの要求を行うことができます。あなたは、おそらくこのような何かを書くことができ:

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

値が関数のため、必要性を全く変えていないされていない場合は、ちょうどそうのような式を評価ものの:

ename: { required: ($("#mem_rights").val() == 4) } 
+0

問題を引き起こしている部分ではありません。それは電子メールの部分です。 –

関連する問題