Home  >  Q&A  >  body text

javascript - 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");    
    }
});
ringa_leeringa_lee2683 days ago245

reply all(2)I'll reply

  • 阿神

    阿神2017-04-10 17:00:11

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

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

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

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 17:00:11

    初步判断你的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');
      }
    });

    reply
    0
  • Cancelreply