Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery日期选择器不处理ajax生成的输入字段_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jQuery日期选择器不处理ajax生成的输入字段

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&

我有一个从服务器端通过Ajax生成的输入字段,并插入到当前页面中。我的问题是:当通过Ajax生成输入字段时,jQuery日期选择器不处理该字段,但当该字段直接放置在页面中时,它会工作

下面,我包含了我的代码的缩小版本

HTML代码:

<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,我用更多的代码更新了我的问题。