Javascript jQuery日期选择器不处理ajax生成的输入字段
我有一个从服务器端通过Ajax生成的输入字段,并插入到当前页面中。我的问题是:当通过Ajax生成输入字段时,jQuery日期选择器不处理该字段,但当该字段直接放置在页面中时,它会工作 下面,我包含了我的代码的缩小版本 HTML代码:Javascript jQuery日期选择器不处理ajax生成的输入字段,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个从服务器端通过Ajax生成的输入字段,并插入到当前页面中。我的问题是:当通过Ajax生成输入字段时,jQuery日期选择器不处理该字段,但当该字段直接放置在页面中时,它会工作 下面,我包含了我的代码的缩小版本 HTML代码: <form id="user-form"></form> 下面是inputfield loader.php <input type="text" name="firstname" id="firstname"></div&
<form id="user-form"></form>
下面是inputfield loader.php
<input type="text" name="firstname" id="firstname"></div>
<div><input type="text" name="email" id="email"></div>
<div><input type="text" name="birthdate" id="datefield"></div>
<div><input type="submit"></div>
正如我已经说过的,如果输入字段只是硬编码到页面中,那么这种方法很有效。但是,当作为Ajax调用的返回字符串插入DOM时,日期选择器不再工作
有人知道怎么解决这个问题吗
注意根据@AkshayKhandelwal的评论,我已经更新了问题,添加了准确显示发生了什么事情的代码
success: function() {
$('#datefield').datepicker();
}
日期选择器不再工作,因为您将用新的日期选择器替换现有的日期选择器。因此绑定不再有效,因为引用的日期选择器不存在
将新的日期选择器插入dom后,您必须重新绑定日期选择器。您需要在Ajax成功中重新初始化日期选择器,因为您将现有的日期选择器替换为新的日期选择器
$.ajax({
type: "POST",
url: "path" ,
success: function(data) {
$('#content').html(data);
$("#datefield").datepicker();
} ,
error: function () {
alert('Error');
}
});
希望对你有帮助 当您使用
$.ajax
时,可能应该执行以下操作:
var _ajax = function(url, data, type){
return $.ajax(url, {
data: data
type: type
})
}
_ajax('handler.ashx', null, 'POST').done(function(response){
// this block of code will execute when `ajax request` is finished !
// for you case:
$('#datefield').datepicker();
});
并按如下方式使用:
var _ajax = function(url, data, type){
return $.ajax(url, {
data: data
type: type
})
}
_ajax('handler.ashx', null, 'POST').done(function(response){
// this block of code will execute when `ajax request` is finished !
// for you case:
$('#datefield').datepicker();
});
在ajax生成输入后执行datepicker激活代码field@AkshayKhandelwal,这正是我正在做的,它不起作用。JavaScript不是魔法。它要求元素绑定事件,除非元素存在,否则无法在该元素上的事件上添加回调。由于在加载dom后添加元素,因此只能在jquery中使用on()处理委派事件。如果您无法使用委派事件加载datepicker,您可以从页面的开始添加输入,将其隐藏,并在需要时显示necessary@AkshayKhandelwal,我用更多的代码更新了我的问题。