2016-12-02 103 views
1

我试图在每次选择Google地图中的某个地方时创建新的datepicker。jQuery datepicker不适用于多个实例

  $(function(){$(".datepick").datepicker({ 
       dateFormat : "yyyy-MM-dd" 
       }); 
      }); 

    var tomakedate = document.getElementById("fordate"); 

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

    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); 

在浏览器中,带有新添加的datepicker的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> 

带有id#datepicker的输入元素将在页面加载时出现。每次在谷歌地图上选择一个地方时,都会添加另一个类别为“datepick”的输入类型。 浏览器的检测元素没有错误或警告。

编辑:我试图替换行:

inputcal.className = “datepick hasDatepicker”;与

inputcal.className =“datepick”;

它仍然无法正常工作。

+0

非常感谢! 在tomakedate.appendChild(inputcal)后添加函数;工作。 – trin

+0

很高兴我能帮到你。我实际上阐述了我的评论,并将其作为答案。 – Santi

回答

1

您正在做$('.datepick').datepicker();之前这些元素与datepick类存在。 之后添加的新元素而不是将被转换为日期选取器,因为它仅指在当时处满足选择器的元素。

我喜欢用这样的事情的比喻就是我所称的百货比喻:

比方说,你在百货公司工作。你的经理说:“把一个红色的贴纸放在玩具部门的所有东西上” - 然后你就这么做。第二天,有100个新玩具进来。你的经理立即向你问道:“为什么新玩具没有红色贴纸?”

这与您在此处询问的内容类似。您正在将目前为.datepick的所有元素转换为日期选择器,但是如果创建了新元素,则不会转换它们。

您可以修改代码以使元素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"});