input change()事件失效

在html里写了input的change()方法是有效的,移到jsp页面就change()事件就失效了,这是怎么回事?图片描述

$(".form_datetime").change(function(){
    var ctime=sysDate();
    var time=$(this).val();    
    var att=$(this).attr("id");
    if (time>ctime) {
        alert("所选日期超出查询范围,不能选择大于今天的日期!");
        $("#"+att).val(ctime);    
        $('.datepicker').datepicker('show');
        $(".active").removeAttr("class","active");
        $(".today").attr("class","active day");    
    }
});
阅读 10.5k
2 个回答

可能是异步了,就是$(".form_datetime")这个元素并没有绑定上change事件

解决方法,用“on”来绑定事件。

$("body").on("change",".form_datetime",callback)

新手上路,请多包涵

初步判断你的BUG应该是因为DOM是动态加载的问题,后来加入的DOM并未绑定事件
两种方法
1、动态页面确保代码运行的时候DOM已经载入完毕
2、代码修改为

$('body').delegate('.form_datetime', 'change', function () {
  var ctime = sysDate(),
    time = $(this).val(),
    att = $(this).attr('id');
  if (time > ctime) {
    alert('所选日期超出查询范围,不能选择大于今天的日期!');
    $('#' + att).val(ctime);
    $('.datepicker').datepicker('show');
    $('.active').removeAttr('class', 'active');
    $('.today').attr('class', 'active day');
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏