2016-04-22 3 views
0

開始日と終了日の単純なビューがありますが、開始日が等しい場合は「半日」チェックボックスを表示します終了日までフォームを転記する前に入力した値のビューを更新する方法MVC/C#

これは私がこれまでに試したことですが、ページの読み込み時にのみリフレッシュされるため、ビューをリフレッシュしないため、開始日が終了日と等しいかどうかを確認することができません。チェックボックスの表示と非表示を切り替える最も良い方法は何ですか?

@Html.FormEditorFor(x => x.StartDate) 
    @Html.FormEditorFor(x => x.EndDate) 
    if (Model.StartDate == Model.EndDate) 
    { 
     @Html.FormEditorFor(x => x.IsHalfDay, inputClass: "col-sm-1") 
    } 
    @Html.FormDropdownFor(x => x.HalfDayAP, ampmDropdown, inputClass: "col-sm-1") 
    @Html.FormEditorFor(x => x.ReasonForLeave) 
+0

ページの読み込み時にstartdate = enddateと表示されたら、半日チェックボックスを表示します。いくつかの値を入力すると、jquery/javascriptを使って関数を呼び出して表示/非表示にする必要があります。半日 –

+0

@Alorikaこれはページの読み込み時にのみチェックされるので、この質問をしています。問題は、半日を表示/非表示にする方法です。 –

+0

javascriptまたはjQueryを使用してこのシナリオを処理できます。 mvcはASP.netのように動作しないため、日付を入力するときにサーバ側のヒットは得られません。両方の日付フィールドのonchangeイベントでjQueryを使用してみてください。それに応じて操作を行います。例が必要な場合は教えてください –

答えて

2

あなたがリクエストしたとおり、これは次のように実行できます。

ステップ1:

<script type="text/javascript" src="<jQuery version you include in your project>.js"> 

プロジェクトにjQueryライブラリを含めるステップ2:

@Html.FormEditorFor(x => x.StartDate) 
    @Html.FormEditorFor(x => x.EndDate) 
    <span id="IsHalfDay" style="display:@(Model.StartDate == Model.EndDate ? "block" : "none")"> 
    @Html.FormEditorFor(x => x.IsHalfDay, inputClass: "col-sm-1") 
    </span> 

    @Html.FormDropdownFor(x => x.HalfDayAP, ampmDropdown, inputClass: "col-sm-1") 
    @Html.FormEditorFor(x => x.ReasonForLeave) 

ステップ3:あなたのビュー

上 書き込み、次のスクリプトブロックを以下のようにHTMLを変更
<script type="text/javascript"> 
$(function(){ 

     $("input[name=StartDate],input[name=EndDate]").change(function(){ 
      if($("input[name=StartDate]").val() == $("input[name=StartDate]").val()) 
      { 
       $("#IsHalfDay").show(); 
      } 
      else 
      { 
       $("#IsHalfDay").hide(); 
       $("input[name=IsHalfDay]").removeAttr("checked"); 
      } 
     }); 
}); 
</script> 
関連する問題