Javascript 页面加载后添加的类字段的Datepicker初始化

Javascript 页面加载后添加的类字段的Datepicker初始化,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我有一些字段,在页面加载后可以添加多个额外字段(想想工作简历上的教育和工作经验字段)。我正在使用 我可以在第一个字段上添加日期选择器,但后续添加的字段不会访问日期选择器,尽管它们是原始字段的克隆/基本副本。我猜datepicker只在页面加载时初始化,或者只为页面上的一个类初始化 因此,我在一个页面上初始化日期选择器: $('.input-append.date').datepicker(); 用于此类封装的表单代码块。确定初始页面加载;如果出现错误并且页面重新加载以前输入的多个字段,也可以(

我有一些字段,在页面加载后可以添加多个额外字段(想想工作简历上的教育和工作经验字段)。我正在使用

我可以在第一个字段上添加日期选择器,但后续添加的字段不会访问日期选择器,尽管它们是原始字段的克隆/基本副本。我猜datepicker只在页面加载时初始化,或者只为页面上的一个类初始化

因此,我在一个页面上初始化日期选择器:

$('.input-append.date').datepicker();
用于此类封装的表单代码块。确定初始页面加载;如果出现错误并且页面重新加载以前输入的多个字段,也可以(对于返回的所有字段,都有一个日期选择器)。但是,使用另一个js函数向表单添加新字段,其他新字段无法访问datepicker。我现在不知道该怎么做,也许有更多经验/智慧的人可以给我一个提示

编辑:

很简单:我只是加了一句:

 $('.input-append.date').datepicker();

到调用新字段的代码。至于是不是最佳的解决方案,我不知道,任何专门研究js的人都可以对此发表评论,而且在我扩展搜索词后,我发现这里还有许多其他类似的问题。然而,我现在所做的对我来说已经足够好了

对于正在动态添加的元素,请使用data-provide=“datepicker”属性。它将被惰性地初始化。例如,如果输入字段出现在ajax响应中并加载到容器div中,那么在本例中:

<input type="text" data-provide="datepicker" />
这会奏效的

同样,如果您通过jquery创建一个元素并将其附加到某个容器中(我认为这是在您的情况下发生的),例如,您有一个函数,该函数创建textbox并将其附加到某个容器div,并且该函数在某个元素的单击事件中调用,比如说它的按钮。同样,数据提供属性是这个问题的解决方案。比如说

function createTextBox(){
    var t = $('<input>').attr('data-provide','datepicker');
    $('#container-div').append(t);
}

简而言之,无论动态元素是以字符串形式出现在ajax响应中,还是通过jquery创建的,只要使用数据提供属性设置引导数据采集器即可。因为在这种情况下,datepicker是以引导方式延迟初始化的。

在每个动态添加的元素被附加到DOM后,您需要对其进行初始化。例如,
myElem.appendChild(newTexInputElem)$(newtelem).datepicker()
这是我在初步诊断后猜到的,但不完全确定如何进行。试试我上面写的。我假设随后添加的字段通过
appendChild
(或jQuery
append
)附加到DOM。追加之后,必须对刚刚追加的元素调用
datepicker()
。您可以调用original
$('.input append.date').datepicker()但这将尝试初始化已经初始化的日期选择器。所以最好是对附加的元素单独调用
datepicker
。如果您发布代码,我可以举个例子。谢谢!有同样的问题。
function createTextBox(){
    var t = $('<input>').attr('data-provide','datepicker');
    $('#container-div').append(t);
}
$(document).ready(function(){
      $('#someBtn).click(createTextBox);
});