在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");
}
});
阿神2017-04-10 17:00:11
可能是异步了,就是$(".form_datetime")这个元素并没有绑定上change事件
解决方法,用“on”来绑定事件。
$("body").on("change",".form_datetime",callback)
高洛峰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');
}
});