2012-03-26 12 views
1

したがって、4つの値A、B、CおよびDを持つHTMLドロップダウンボックスがあります。また、いくつかのテキストを含む4つのテキストボックス(P1、P2、P3、P4) 4つの空白のテキストボックス(B1、B2、B3、B4)が表示されます。依存関係とパラメータプロパティを使用したJqueryカスタムルールの検証

dropdownboxで選択されている値に基づいて検証を適用します。

ドロップダウン値がAの場合は、空白のテキストボックスでその値をチェックしたいB1は既定のテキストボックスの値と等しくないP1とB1は空白のままにすることはできません。

B - > P2.val!= B2.valのドロップダウンボックスの値と同じで、B2を空白にしないでください。他の人にも同じことが言えます。

私は1つのテキストボックスに対してこの方法を思いついたが、どういうわけか何の問題がないのか分からなかった。私の問題に対する解決策を感謝します。

また、ドロップダウンボックスの値がAの場合、2つのテキストボックスの値が同じであること、つまりP1とB1であることを確認するだけです。 !!

HTML

<form> 
    <select class="inlineEdit" name="Dropdownbox" id="Dropdownbox"> 
    <option value="A"> 
     A 
    </option><option value="B"> 
     B 
    </option><option value="C"> 
     C 
    </option><option value="D"> 
     D 
    </option> 
</select> 
    <br/><br/> 
    <input type="text" name="P1" value="Old Value" /> 
    <br/><br/> 
    <input type="text" name="B1" /> 
    <button type="submit">Test</button> 
</form>​​​​​​​​​​​ 

jQueryの

jQuery.validator.addMethod("change", function(value, element, param) { 
alert(param + " " + value); 
    return this.optional(element) || value != param; 
}, jQuery.format("You must enter {0}")); 


$("form").validate({ 
    rules: { 
     B1: { 
      required: function(element) { 
       return $("#Dropdownbox").val() == "A"; 
      }, 
      change: { 
       param: $("#P1").val(), 
       depends: function(element) { 
        return $("#Dropdownbox").val() == "A"; 
       } 
      } 
     } 
    }, 

    debug: true 
});​ 

........

一つで、ここで上記のコードを実行しようとすることができますhttp://jsfiddle.net/

問題は$( "#P1")です。valはtrueを送信していますが、実際の値はparamではありません。 paramで値をハードコードすると、コードは正常に動作します。任意の解決策???

おかげで、

+0

DropdownAの前に#がありませんか? – JSager

+0

ammいいえ、元のコードに#signを配置しています。 – Nanu

+0

元のコードを投稿していないのであれば、さらに難しくなりますが、変更オブジェクトの後ろに閉じることができます(閉じるとは異なりますが、変更はありません) – JSager

答えて

0

いくつかの考え:

それはあなたがP1の前に#記号が欠落していることかもしれません。あなたが名前としてP1を特定しようとするなら、それは$('[name="P1"]')を必要とします。このような言葉をつかむために、デフォルトの文字列を入れるのではなく、実際のコードを含めることができれば助けになります。同様に、名前でB1を識別しているようです。代わりにIDまたはクラスまたは何か、それはあなたの問題になります。このような理由から、適切なHTMLを含むコードサンプルを持つことも役立つかもしれません。

その他の効果は、あなたが見ているですか?このような質問に答えるときは、意図した結果と実際の結果の両方を持つことが役立つことがよくあります。

セマンティクス上の懸念があることを考えると、私はjQuery.Validator.addMethod呼び出しのすべてのロジックを保つ方が好きです。なぜなら、セマンティクスを少しシンプルに保ち、すべて同じ場所にある。自分のセマンティクスに間違ったことは何も見えません。

編集:yep。私が思ったように。あなたは$("#P1")を使用しています。これにより、IDが "P1"のノードが得られます。 JQueryを使用して名前を取得するには、$('[name="P1"]')を使用する必要があります。代わりに、適切なタグがその名前に一致するIDを持つようにHTMLを設定することができます(Dropdownboxの場合と同じように)。

+0

ベン、ここに#記号を含むようにコードを更新しました。混乱を制限することを願っています。そして、上記の部分の意図した結果は、dropdownboxに値Aがあるときは、それだけで、2つのテキストボックスの値が同じであること、つまりP1とB1であることを確認することです。 !! – Nanu

+0

これをjsfiddleに入れることができますか?問題の一部だけを見ているときに、誰かが何かをデバッグするのを手助けするのはちょっと難しいことです。 – JSager

+0

私は上記をjsfiddleに入れて、エラーなしでコンパイルしました。まだ動作していません。私はparamsに疑問を持ち、プロパティに依存します。どんな手掛かり ? – Nanu

関連する問題