jQuery datepicker不适用于多个实例

时间:2016-12-02 18:22:21

标签: javascript jquery datepicker

每次选择Google地图中的某个地点时,我都会尝试创建新的日期选择工具。

                    selectedplacessize = selectedplaces.length;
                    inputcal = document.createElement("input");
                    inputcal.type = "text";
                    inputcal.name = "datepicker" + selectedplacessize;
                    inputcal.setAttribute("id","datepicker" + selectedplacessize);
                    inputcal.className = "datepick hasDatepicker";
                    tomakedate.appendChild(inputcal);

这是在html中添加新的日期选择器的事件。

         <td id="fordate"> <input type="text" id="inputlatlong" name="inputlatlong" hidden="">
         <input type="text" id="datepicker" name="datepicker" class="datepick hasDatepicker">
         <input type="text" name="datepicker1" id="datepicker1" class="datepick hasDatepicker"></td>

在浏览器中,带有新添加的datepicker的html看起来像这样。

{{1}}
带有id #datepicker的

输入元素将在页面加载时出现。每次在谷歌地图上选择一个地点时,将添加另一个类别为“datepick”的输入类型。 浏览器的inspect元素中没有错误或警告。

编辑:我已尝试更换该行:

inputcal.className =“datepick hasDatepicker”;与

inputcal.className =“datepick”;

它还没有用。

1 个答案:

答案 0 :(得分:1)

在这些具有类$('.datepick').datepicker();的元素存在之前,您正在执行datepick 。在这行代码之后添加的新元素将转换为datepickers,因为它仅指向满足当时选择器的元素

我喜欢用于这类事情的类比就是我所说的百货商店类比:

假设你在百货公司工作。你的经理说:“给玩具部门的所有东西贴上红色标签” - 所以你这样做了。第二天,100个新玩具进来了。你的经理立即向你询问“为什么新玩具上没有红色贴纸?”

这与你在这里问的类似。您正在将当前.datepick的所有元素转换为datepickers,但是在创建新元素时,您不会转换它们。

您可以通过执行以下操作来修改代码,使元素成为datepickers:

selectedplacessize = selectedplaces.length;
inputcal = document.createElement("input");
inputcal.type = "text";
inputcal.name = "datepicker" + selectedplacessize;
inputcal.setAttribute("id","datepicker" + selectedplacessize);     
inputcal.className = "datepick hasDatepicker";
tomakedate.appendChild(inputcal);

$inputcal = $(inputcal);
$inputcal.datepicker({dateFormat : "yyyy-MM-dd"});