datepicker适用于错误的字段

时间:2012-09-07 07:46:16

标签: jquery jquery-ui

我的jQuery UI datepicker面临一个小问题。 问题是,我有我的页面和一些像这样的输入:

blabla | blabla | .date-picker | blabla
blabla2 | blabla2 | .date-picker | blabla2
blabla3 | blabla3 | .date-picker | blabla3

所以'blabla'只是一些文本,而'.date-picker'是一个输入,带有'date-picker'类。

在我的JavaScript代码中,我只有以下内容:

$(function() {
    $('.date-picker').datepicker();
});

但是,例如,如果我点击“blabla3”行的输入,而不是更新正确的输入,它总是更新第一个......

我的输入具有所有相同的ID(我无法更改),但我正在使用输入的类作为我的选择器,所以它应该可以工作但不会。

3 个答案:

答案 0 :(得分:6)

你好老帖子,但是那些仍然面临这个问题的人......

只需删除新输入的id,datepicker始终会生成一个新ID,即输入没有。如果它有一个,则datepicker会保留它,这意味着第一个输入被克隆,最后一个也将被更新。

答案 1 :(得分:3)

你应该改变输入的id,否则它将不起作用,因为当你选择任何日期时,它会使用DP_jQuery_1347006322116.datepicker._selectDay('#same',8,2012, this);return false;这个函数来选择Day,它会输入id作为输入。

因此,如果您有多个ID,它将选择第一个输入并在那里设置日期。

答案 2 :(得分:2)

我有一个类似的问题,我会使用javascript动态添加包含具有相同ID标签的日期字段的新DIV容器。在我的情况下解决的唯一方法是动态重写所有ID,然后销毁/创建datepicker功能:

var n=0;    
$("[id*='blabla']").each(function(){
    n++;
    tempField = this.id.split("-");
    this.id = tempField[0]+"-"+n;
    });

// first remove datepicker functionality since renaming of id above then            
// add datepicker to any field with "datepicker" as class   

    $("input.datepicker").datepicker("destroy").datepicker();

我修改了以上内容以适合您的用例(我认为)。希望这会有所帮助。

顺便说一句:我用连字符(“ - ”)分割的原因是因为每次动态创建带有datepicker字段的另一个DIV容器时我都可以调用此函数。它将按顺序系统地重命名所有ID,以便以后进行表单处理。