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

时间:2013-01-24 14:59:30

标签: javascript jquery twitter-bootstrap

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

我可以在第一个字段上添加一个日期选择器,但后续添加的字段不会访问datepicker,尽管它是原始的克隆/必要重复项。我猜测,日期选择器只能初始化页面加载或页面上只有一个类。

所以在页面上我初始化了datepicker:

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

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

编辑:

足够简单:我只是添加:

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

调用新字段的代码。至于作为我不知道的最佳解决方案,任何专门研究js的人都可以对此发表评论,并且在我扩展搜索条件后,我发现还有许多其他类似的问题。但是,现在我正在做的事情已经足够了。

1 个答案:

答案 0 :(得分:0)

对于在飞行中添加的元素,使用data-provide =" datepicker"属性。它将被懒惰地初始化。例如,如果输入字段出现在ajax响应中并加载到容器div中。所以在这种情况下:

<input type="text" data-provide="datepicker" />

所以当你加载这个ajax响应时,它就像cotainer div一样

$('#container-div').html(ajax_response);

这会奏效。

以同样的方式,如果你通过jquery创建一个元素并将其附加到某个容器(我认为这是在你的情况下发生),例如你有一个创建文本框和附加的函数它到一些容器div,这个函数在某个元素的点击事件中被调用,让它说出它的按钮。 data-provide属性再次解决了这个问题。例如

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

这个函数在某个按钮的点击事件中被调用,就像这样:

$(document).ready(function(){
      $('#someBtn).click(createTextBox);
});

简而言之,该动态元素是作为字符串进入 ajax响应还是通过jquery 创建的,只需使用 data-provide 属性来设置bootstrap datepicker。因为在这种情况下,datepicker以Bootstrap方式懒洋洋地初始化。