2012-03-26 11 views
2

私は値が「はい」と「いいえ」のラジオボタンを持っています。ユーザーが「はい」を選択すると、テキストボックスがスライドします。だからそれは検証されなければならない。ユーザーが「いいえ」をクリックすると、テキストボックスが上にスライドし、検証の必要はありません。ASP.NET MVC 3とJQueryのラジオボタンの選択に基づいてテキストボックスを検証する方法は?

ValidationMessageFor(model => model.TextBoxValue)を使用しようとしましたが、フォームを送信できませんでしたので、テキストボックスが滑っても検証されます。

答えて

1

を可能性があるのに役立ちます合理的な解決策になります。それはあなたがいくつかの条件に基づいてフィールドを検証することができます。構文はかなり表現力があります:

$("#SomeFormId form").validate({ 
       rules: { 
        "YourTextBoxId": { 
         required: { 
          depends: function(element) { 
           return $("#YourCheckBoxId").is(":checked"); 
          } 
         } 
        } 

// Writing this is notepad, you'll have to look up the syntax if you choose this approach. 
0

テキストボックスを表示するかどうかを示す非表示フィールドを追加します。検証する前にフィールドを確認してください。

JavaScriptを使用して、textbox.style.display == 'hidden'を確認してからvalidate関数を実行することもできます。

これが役に立ちます。

+0

もう少し説明してください。いくつかのコードがありますか?それは本当に役に立つでしょう。 –

+1

コードの一部を投稿することができれば、私もお手伝いできます。あなたの検証関数がjavascriptでもあると仮定すると、サーバー側の呼び出しを行う前に2つのjavascript関数を実行することができます。何かonclick = "function1(); function2();" function1がfalseを返した場合、function2は実行されません。だからfunction1で、あなたのテキストボックスが:textbox.style.visibilityまたはtextbox.style.displayで表示されているかどうかを確認してください。表示されている場合は、function2で検証します。これがより明確になることを願っています。もしそれが役に立つなら、私は投票にも感謝します。私が助けることができるように、より多くのコードを投稿してください。 – c0d3Junk13

0

jqueryを使用してtextboxを上下にスライドさせているとします。もう1つの方法は、textboxの属性disabledをjQueryで上下にスライドするときに切り替えることです。無効な要素はサーバーに送信されません。

編集:私は後または右アウトtextboxをスライドさせるためのコードの前に右を言うと思います 、あなたはこれがどのような方法でそのtextboxを使用してからユーザーを無効にし、次の

<<when showing the textbox 
$("#textbox-id").attr('disabled', false); 

<<when hiding the textbox 
$("#textbox-id").attr('disabled', true); 

ような何かをしたいですこれをサーバーに送信することも含めて、サーバーには値が表示されません。

edit2:フォームが送信されるときにcheckboxの値をチェックする必要があります。チェックされている場合は、textboxをチェックし、そうでない場合はチェックしてください。

+0

私はJQueryを初めて使用しています。私は、JQuery UIのスライドアップとスライダダウン機能だけを知っています。あなたは "無効"の仕組みを見るためにいくつかのリンクやコードを投稿できますか? –

+0

いくつかのコードで私の回答を編集しました。 'textbox'のidが何であれ、textbox-id部分を変更しなければなりません。これは 'textbox'が入ったり出たりしているときに他のコードが実行されているときにインラインになります。 – sparrow

0

私が理解する限り、ラジオボタンの状態をチェックして、テキストボックスを表示/非表示にしたいとします。示されているときは、それを隠しておくと妥当性検査が必要で、妥当性検査は必要ありません。

レンダリング時に検証を有効にすることをお勧めします。今、選択に基づいて、あなたが病気に$(ドキュメント).ready(内部で次のコードを入れて、/非表示のテキストボックスを表示)

 
    // select the radio button 
    var radioBtn = $('#radioBtn1'); 
    var initialState = radioBtn.is(':checked'); 

    // hide/show 
    var textbox = $('#txtBox1')[initialState ? 'show' : 'hide'](); 

    // Show/hide based on radio button selection 
    radioBtn.click(function() { 
     textbox[initialState ? 'show' : 'hide'](); 
    }); 
} 

希望これは "JQuery.Validate" ライブラリ、 よろしく

関連する問題