2016-06-13 9 views
0

私はMVC(Razor)Webアプリケーションを持っています。フォームには、2つのフィールド、1つのドロップダウンボックス(剣道)、および日付用の1つの入力フィールドがあります。入力フィールドを条件付きで投稿する方法

ユーザーがドロップダウンを変更すると、ドロップダウンボックスで選択したタイプに基づいて、2番目の入力フィールドが有効または無効になります。入力フィールドが無効になっているときは、入力をデフォルト値で埋めます。

ユーザーがフォームを送信すると、第2フィールドが有効になっているときにビューモデルに投稿された第2フォームフィールド値のみが表示されます。私はこれをHTMLの一般的なパターン、無効なフィールドはPOSTの一部ではないことが分かっています。

私の質問:フィールドが無効になっているときにPOSTされた値を取得するにはどうすればこの問題を解決できますか?それは私が同様の要件を持っていた... JSに

+0

、あなたの作業コードが示すことはできますか?だから、私たちが答えを出す方が簡単になるでしょう。 JSを使って投稿しているのですか、@ Html.BeginFormを使っていますか? –

+0

投稿は、Razorでbeginformを使用する通常の送信ボタンです。 –

答えて

0

、ドロップダウンボックスののonchangeハンドラにこのコードをJS添付:

var defaultDateValue = "2017-01-04"; //just for demo 
var $effectiveToInput = $("#@Html.IdFor(m => m.EffectiveToDate)"); 
$effectiveToInput.parent().append("<input type=\"hidden\" name=\"@Html.NameFor(m => m.EffectiveToDate)\" id=\"@Html.NameFor(m => m.EffectiveToDate)\" value=\"" + defaultDateValue +"\" />"); 

および他のタイプのために、私はチェックして隠しフィールドをクリア:

function removeHiddenEffectiveToDateField() { 
    var $effectiveToInput = $("#@(Html.IdFor(m => m.EffectiveToDate))[type = hidden]"); 
    if (null !== $effectiveToInput) { 
     $effectiveToInput.remove(); 
    } 
} 
0

を行う必要があります。また、私がやったことは、マウスイベントを削除し、ビット

[https://codepen.io/DawsonMediaD/pen/Dqrck][1] 
をスタイリングすることにより、テキストボックスが無効のように見えるになるだろうクラスを作成しました

または

トリッキー、ちょうどポストの前に、それらのすべてを可能に

それを修正
関連する問題