2016-09-21 52 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