2016-09-21 53 views
1

在我的編輯視圖中,我有一個接受Date的文本框。jQuery更改事件根本沒有觸發

使用MVC,當我進入編輯視圖時,這些字段已經填入了該記錄的信息,這很好。

但是,我想在其中一個字段上設置事件偵聽器,特別是接受上述日期的字段。

當我去的頁面,我檢查源和它看起來像這樣該字段:

<div class="form-group"> 
    <label class="control-label col-md-2" for="DateEntered">Date Entered:</label> 
    <div style="width:26.5%" class="col-md-10"> 
     <div id="datetimepicker" class="input-group date"> 
      <input class="form-control text-box single-line" id="DateEnteredPhase" name="DateEntered" type="datetime" value="09/21/2016" /> 
      <span class="field-validation-valid text-danger" data-valmsg-for="DateEntered" data-valmsg-replace="true"></span> 
      <span class="input-group-addon"> 
       <span class="glyphicon glyphicon-calendar"></span> 
      </span> 
     </div> 
    </div> 
</div> 

通知價值是如何"09/21/2016"這是正確的在第一。

這裏是我的jQuery:

$(document).ready(function() { 
    $(function() { 
     $('#DateEnteredPhase').change(function() { 
      var dateString = $('#DateEnteredPhase').val(); 
      alert(dateString); 
     }); 
    }); 
}); 

現在,我已經在文本框中的日期值更改爲"09/22/2016",並且改變事件不點火。另外,當我在之後檢查源我更改日期時,值仍然表示"09/21/2016"而不是"09/22/2016"

當我將其插入JSFiddle時,更改事件正在正確觸發。

我該如何解決這個問題?

任何幫助表示讚賞。

UPDATE

DateTimePicker (by eonasdan) jQuery中被初始化:

$(function() { 
    $('#datetimepicker').datetimepicker({ 
     format: 'MM/DD/YYYY' 
    }); 
}); 
+0

變化事件的細節是在你的項目中的代碼,這同菲德爾?我很懷疑。我想你已經使用了一個dateTime選擇器插件..讓我知道如果我錯了 –

+0

JSFiddle演示了代碼的工作原理。除非你真的能證明這個問題,否則我看不到我們能做什麼。 – David

+0

你是否以編程方式更改了值?請記住,通過代碼進行的這種更改不會觸發「更改」事件!只有在手動更改字段時纔會觸發該事件... – eisbehr

回答

3

問題:您申請後的插件的用戶只需更改通過在用戶界面上顯示的日曆日期,插件將編程更改日期是,這不會觸發更改事件

解決方案使用內置的事件處理程序插件趕上change事件,然後執行你的代碼。所以下面的代碼必須工作。下面是從Plugin Documentation

$(function() { 
    $('#datetimepicker').datetimepicker({ 
     format: 'MM/DD/YYYY' 
    }); 

    //add change event listner that plugin supports 
    $('#datetimepicker').on('dp.change',function(e){ 
    alert(e.date); 
    }) 

}); 
+0

ahh got it!Thank you for the解釋! –

+0

@BviLLe_Kid很高興幫助:) –

0

如果是動態生成的源泉 - 事件不會綁定到文檔準備的元素。嘗試這個。

$(document).on("change", "#DateEnteredPhase", function() { 
    var dateString = $('#DateEnteredPhase').val(); 
    alert(dateString); 
}); 
+0

嘗試過,仍然無法正常工作。 :( –

+0

以及我可以說的唯一的事情 - 如果它不工作 - 你使用的是過時的jQuery版本,或者ID爲「DateEnteredPhase」的元素沒有「更改」事件 – exec