2016-09-07 79 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> 

當從日曆中挑選日期時,應該設置一個值'請選擇問題解決者'。它完美的作品。

然後,如果您偶然輸入日期,它應該返回以前的默認值 - 「選擇一個選項」。

在這兩種情況下,都會觸發更改。

然後,另一個觸發器正在偵聽這些更改。

<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> 

我的故障排除後,事實證明,第一個腳本的第一個if語句不會觸發更改。這可能是因爲它無法識別值爲''的默認選擇選項。我不確定。無論如何,當我從文本字段中刪除日期時,其他文本字段的值不會更改爲「選擇一個選項」,而是更改爲「」。

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

好吧,我已經添加了它。奇怪的是,當我評論第二個腳本的第二個if語句時,這個事情就起作用了。但由於其他原因,我需要第二條if語句。 – GeorgiG

回答

0

我找到了導致問題的原因。事實證明,

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

無法執行,因爲這是默認選項,它後面的值是''。這必須與.change()觸發器混淆,並在其他腳本中造成嚴重破壞。

我改成了

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

...,一切工作現在。

相關問題