2016-09-07 4 views
0

私はテキストフィールドと日付テキストフィールドを持っています。私はJavascriptでそれらを接続しようとしていますが、問題が発生しました。私のスクリプトは:javascriptでデフォルトのドロップダウン値を選択すると、変更がトリガーされません

  <script> 
      $("#solDate").change(function() { 
       if ($(this).val().trim() == '') { 
        $("#caseStatus").val('In Progress'); 
        $("#solvedBy").val('Pick an option'); 
        $("#solvedBy").change(); 
       } 
       else if ($(this).val().trim() != '' && $("#solvedBy").val().trim() == '') { 
        $("#caseStatus").val('Solved'); 
        $("#solvedBy").val('Please, pick the issue solver'); 
        $("#solvedBy").change(); 
       } 
      }); 
     </script> 

日付をカレンダーから選んだ場合は、「Please、pick the issue solver」という値を設定する必要があります。それは完全に動作します。

それから、偶然に日付を入力した場合、以前のデフォルト値 - 「オプションを選択」が返されます。

どちらの場合も、変更がトリガーされます。

次に、別のトリガーがこれらの変更をリッスンしています。私のトラブルシューティング後

<script> 
     $("#solvedBy").change(function() { 
      if ($(this).val() == 'Please, pick the issue solver') { 
       $("#saveBtn").attr('disabled', true); 
       $("#slvByValMsg").text('You have solution date and no solver'); 
      } 
      else if ($(this).val().trim() == '' && $("#solDate").val().trim() != '') { 
       $("#saveBtn").attr('disabled', true); 
       $("#slvByValMsg").text('You have solution date and no solver'); 
      } 
      else { 
       $("#saveBtn").attr('disabled', false); 
       $("#slvByValMsg").text('');; 
      } 
     }); 
    </script> 

、それは最初のスクリプトであれば最初の文は変更をトリガしないこと、が判明しました。値 ''のデフォルトのピックオプションを認識しない可能性があります。私はわかりません。とにかく、テキストフィールドから日付を削除すると、他のテキストフィールドの値は 'オプションを選択'に変更されず、 ''に変更されます。

HTMLコード:

@Html.LabelFor(model => model.Solution_Date, htmlAttributes: new { @class = "control-label col-md-2" })<sup> 1 </sup> 
<div class="col-md-10"> 
     @Html.TextBoxFor(model => model.Solution_Date, new { @id = "solDate", @class = "one", @type = "datetime" }) 
     <br /> 
     @Html.ValidationMessageFor(model => model.Solution_Date, "", new { @class = "text-danger" }) 
</div> 

@Html.LabelFor(model => model.Solved_by, htmlAttributes: new { @class = "control-label col-md-2" }) 
<div class="dropdown"> 
    @Html.DropDownListFor(model => model.Solved_by, (IEnumerable<SelectListItem>)ViewBag.SlvBy, "Pick an option", new { @id = "solvedBy" }) 
<br /> 
@Html.ValidationMessage("Solved_by", "", new { @id = "slvByValMsg", @class = "text-danger" }) 
</div> 

私はこれを行うには、おそらくより良い方法がある知っているが、私は、この変更のトリガーが起動しない理由を私は知らない主な理由は、解像度を探しています。

ありがとうございます!

+1

htmlも投稿できますか? – user2399432

+0

OK、追加しました。奇妙なことに、2番目のスクリプトの2番目のif文をコメントすると、そのことが機能します。しかし、他の理由で2番目のif文が必要です。 – GeorgiG

答えて

0

問題の原因を見つけました。

$("#solvedBy").val('Pick an option'); 

これはデフォルトのオプションであり、その背後の値は「 '」であるため、実行できません。これは、.change()トリガーを混乱させ、他のスクリプトでも混乱を招くようにする必要があります。

私は

$("#solvedBy").val(''); 

にそれを変更し...、すべてが機能するようになりました。

関連する問題