2017-09-12 15 views
0

チェックボックスがオンになっていない場合、特定のフィールドが有効になっているボックスと無効になっているフィールドをチェックするときにコードを追加しようとしています。私はここを見て、このコードを見つけました:レイザービューでクライアント側のフィールドを有効/無効にする

<head> 
<script type="text/javascript"> 

    $('#UseForecast').click(function() { 
     var $this = $(this); 

     if ($this.is(':checked')) { 
      $('#MinimumOnHandQuantity').removeAttr("disabled"); 
      $('#ForecastMultiplier').attr("disabled", "disabled") 
     } else { 
      $('#MinimumOnHandQuantity').attr("disabled", "disabled") 
      $('#ForecastMultiplier').removeAttr("disabled"); 
     } 
    }); 
</script> 

</head> 

@Html.EditorFor(model => model.UseForecast, new { htmlAttributes = new { @class = "form-control" } }) 

@Html.EditorFor(model => model.MinimumOnHandQuantity, new { htmlAttributes = new { @class = "form-control" } }) 

@Html.EditorFor(model => model.ForecastMultiplier, new { htmlAttributes = new { @class = "form-control" } }) 

私は何が欠けていますか?

私は自分のページにフィールドのIDを含めるように変更しました。 UseForecastはチェックボックスのID、MinimumOnHandQuantityは最初のテキストボックス、ForecastMultiplierは2番目のテキストボックスのIDです。コードをステップ実行しようとすると、ページが最初に読み込まれると停止しますが、チェックボックスをクリックすると実行されません。予想通りclickイベントは、head要素の外にスクリプトタグを移動させる必要が働かない前ready方法の処理ブロックを置く

+1

あなたは、ドキュメントのロードハンドラを必要とするか、HTML要素の下にスクリプトを移動します。また、id属性をダブルチェックして、ヘルパーが期待通りにIDをレンダリングしていることを確認してください。 – Jasen

+0

UseForecastは 'CheckBox'ですか? –

+0

@ジャセン?ページの下部に? – djblois

答えて

0

<head> 
<script> 
    // this ready method should be added before handling all jQuery DOM event handlers 
    $(document).ready(function() { 

     $('#UseForecast').click(function() { 
      var $this = $(this).is(':checked'); 

      if ($this) { 
       $('#MinimumOnHandQuantity').removeAttr("disabled"); 
       $('#ForecastMultiplier').attr("disabled", "disabled") 
      } else { 
       $('#MinimumOnHandQuantity').attr("disabled", "disabled") 
       $('#ForecastMultiplier').removeAttr("disabled"); 
      } 
     }); 
    }); 
</script> 
</head> 

注:いずれかscript要素を通してhead要素内にjQueryのスクリプトファイルを含めることを忘れないでください( <script src="[path_to_jquery_script].js">)またはSystem.Web.Optimizationscript bundlingを使用してください。

の作業例:.NET Fiddle Demo

+0

哲也、それは今では素晴らしいです。ただ好奇心が強い、それは今はページの負荷で実行されません。私は、ページの読み込み中とドキュメントの準備中に実行する必要があります。私はどのようにして両方を行うのですか? – djblois

+0

"ページの読み込み中に実行する"という意味を説明できますか?(デフォルト状態のテキストボックスを無効にするなど)私は、最初の読み込み中にチェックボックスのトグルを処理するjQueryの 'load'メソッドを追加できると思います。 –

+0

はい、ページの読み込み時にデータベースに保存されている内容に基づいて無効にします。デフォルトは常に異なるためです。現在、私はC#コードでそれを行いますが、それは冗長だと感じています。 – djblois

関連する問題