sto*_*ain 1 javascript jquery jquery-ui
我正在尝试使用datepicker复制字段.该字段是重复的,但是datepicker只显示在前两个字段上......我尝试过其他的解决方法,比如在live调用datepicker的字段中添加一个监听器,但是没有去.
var dc=0;
jQuery('#otherRecAdd').click(function(){
dc++;
var d=$('othrRecDates').innerHTML;
var nd=document.createElement('div');
nd.innerHTML=d;
var divID='othrDate'+dc;
nd.id=divID;
jq(nd).attr('id','orInID'+dc);
var ind=jq(nd).find('input');
var indID='orDate'+dc;
jq(ind).attr('id',indID)
document.getElementById('otherReccuranceDiv').appendChild(nd);
var x=jq("input[name=othrRdate]");//x.length increments correctly; it is finding all of the inputs
x.datepicker();
})
//this doesn't work either
jq(function(){
jq('input[name=othrRdate]').live('click', function() {
jq(this).datepicker({showOn:'focus'}).focus();
});
});
Run Code Online (Sandbox Code Playgroud)
所以表单从一个输入开始,而datepicker正常工作.如果我复制该输入,则复制的输入正常工作.但是,在此之后,任何后续重复的输入都无法按预期工作.这是生成的html:
<label for="otherRec">Other Reccurance</label></b>
<input name="otherRec" id="otherRec" onclick='toggleDiv("othrRecDates");' type="checkbox">
<div id="othrRecDates" style="">
<b>Date:</b>
<input class="hasDatepicker" name="othrRdate" id="date" type="text">
<br>
</div>
<div id="orInID1">
<b>Date:</b>
<input class="hasDatepicker" name="othrRdate" id="orDate1" type="text">
<br>
</div>
<div id="orInID2">
<b>Date:</b>
<input class="hasDatepicker" name="othrRdate" id="orDate2" type="text">
<br>
</div>
<div id="orInID3">
<b>Date:</b>
<input class="hasDatepicker" name="othrRdate" id="orDate3" type="text">
<br>
</div>
Run Code Online (Sandbox Code Playgroud)
我只是意识到这对我来说不适用,因为name属性需要是唯一的.我想更好的解决方案将类似于上面的内容,但使用className选择而不是名称.
任何想法都会令人敬畏.
编辑:是的,我正在混合原型和jQuery:/
小智 5
前几天它让我疯了!看起来jqueryui datepicker忽略了类"hasDatepicker"的元素.分配一个新的唯一ID并删除hasDatepicker类就可以了.
if($(objParentTR).next().find('input')){ //spot the input field and iterate
$(objParentTR).next().find('input').each(function(i, domEle){
if($(domEle).hasClass("clsDatePicker")){
$(domEle).attr('id', 'dyncal'+tID++).removeClass('hasDatepicker').datepicker();
}
});
}
Run Code Online (Sandbox Code Playgroud)