动态添加JQuery Datepicker以形成元素
我正在使用克隆方法处理具有动态添加输入的表单。每个输入都需要一个日期选择器。动态添加JQuery Datepicker以形成元素,jquery,html,forms,dynamic,jquery-ui-datepicker,Jquery,Html,Forms,Dynamic,Jquery Ui Datepicker,我正在使用克隆方法处理具有动态添加输入的表单。每个输入都需要一个日期选择器。 每个输入的名称对于输出都是不同的 我正在为此使用jQueryUIDatePicker。 出现的问题(控制台中的消息)是“$cloned.find(…).attr(…)未定义” 我去了另一个帖子 并尝试删除hasDatepicker类(包含在下面的代码中),但问题仍然存在。 感谢您的任何投入或资源 代码如下: <table> <tr> <td name="a" class="FormL
每个输入的名称对于输出都是不同的 我正在为此使用jQueryUIDatePicker。 出现的问题(控制台中的消息)是“$cloned.find(…).attr(…)未定义” 我去了另一个帖子
并尝试删除hasDatepicker类(包含在下面的代码中),但问题仍然存在。
感谢您的任何投入或资源 代码如下:
<table>
<tr>
<td name="a" class="FormLabel" width="100px"><strong>Class Year*</strong></td>
<td width="100px"><input type="text" id="datepicker" name="ClassYear_1" class="usedatepicker" value="" tabindex="4" /></td>
</tr>
</table>
<button type="button" id="add-btn" name="add-btn">Add Class Year</button>
克隆/插入新表行后,您有
.usedatepicker
类的新元素尚未使用datepicker初始化
我注意到您正在尝试在将新行添加到DOM之前使用datepicker初始化新行。两个问题。首先,您试图将datepicker初始化到整个(新)行,而不仅仅是输入字段,其次,在将该行注入DOM后必须执行此操作
试着这样做:
function clone2(){
var $cloned = $('table tr:last').clone();
$cloned.removeClass('hasDatepicker').datepicker();
//console.log($(this));
//alert($(this).attr('name'));
var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
var newIndex = parseInt(oldIndex,10)+1;
$cloned.find('input').each(function(){
var newName = $(this).attr('name').replace(oldIndex, newIndex);
$(this).attr('name', newName);
});
$cloned.insertAfter('table tr:last');
$(".usedatepicker").datepicker(); //<=== NEW
}
函数克隆2(){
var$clone=$('table tr:last').clone();
$cloned.removeClass('hasDatepicker').datepicker();
//log($(this));
//警报($(this.attr('name'));
var oldIndex=$cloned.find('input').attr('name').match(/\d+/);
var newIndex=parseInt(oldinex,10)+1;
$cloned.find('input')。每个(函数(){
var newName=$(this.attr('name').replace(oldIndex,newIndex);
$(this.attr('name',newName);
});
$cloned.insertAfter('table tr:last');
$(.usedatepicker”).datepicker();//克隆/插入新表行后,具有.usedatepicker
类的新元素尚未使用datepicker初始化
我注意到您试图在将新行添加到DOM之前使用datepicker初始化新行。有两个问题。首先,您试图将datepicker初始化到整个(新)行,而不仅仅是输入字段,第二,您必须在将该行注入DOM后执行此操作
试着这样做:
function clone2(){
var $cloned = $('table tr:last').clone();
$cloned.removeClass('hasDatepicker').datepicker();
//console.log($(this));
//alert($(this).attr('name'));
var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
var newIndex = parseInt(oldIndex,10)+1;
$cloned.find('input').each(function(){
var newName = $(this).attr('name').replace(oldIndex, newIndex);
$(this).attr('name', newName);
});
$cloned.insertAfter('table tr:last');
$(".usedatepicker").datepicker(); //<=== NEW
}
函数克隆2(){
var$clone=$('table tr:last').clone();
$cloned.removeClass('hasDatepicker').datepicker();
//log($(this));
//警报($(this.attr('name'));
var oldIndex=$cloned.find('input').attr('name').match(/\d+/);
var newIndex=parseInt(oldinex,10)+1;
$cloned.find('input')。每个(函数(){
var newName=$(this.attr('name').replace(oldIndex,newIndex);
$(this.attr('name',newName);
});
$cloned.insertAfter('table tr:last');
$(.usedatepicker”).datepicker();//非常感谢您的帖子。关于Jquery datepicker中的不同ID,我有一个问题。当使用此(),Jquery Datepicker生成唯一的id。虽然我当然可以像您所说的那样生成它们,但我想知道为什么本机id生成在这种情况下似乎不起作用?我在这里使用了您的建议(),尽管现在,我可以生成所有新的(克隆的)id我想要的输入,前提是没有一个输入框被点击。第一行输入框只会在第二个框被点击/触发后触发日期选择器。只有前两个框才会触发。我的新代码有不同的ID。我尝试删除ID和ID代码,只是离开类,但结果相同。要修改我的上一条注释-控制台中的错误消息是:TypeError:$cloned.find(…).attr(…)未定义
非常感谢您的帖子。关于Jquery Datepicker中的不同ID,我有一个问题。当像这样使用时(),Jquery Datepicker生成唯一的id。虽然我当然可以像您所说的那样生成它们,但我想知道为什么本机id生成在这种情况下似乎不起作用?我在这里使用了您的建议(),尽管现在,我可以生成所有新的(克隆的)id我想要的输入,前提是没有一个输入框被点击。第一行输入框只会在第二个框被点击/触发后触发日期选择器。只有前两个框才会触发。我的新代码有不同的ID。我尝试删除ID和ID代码,只是离开类,但结果相同。要修改我的上一条注释-控制台中的错误消息是:TypeError:$cloned.find(…).attr(…)未定义