我需要在动态创建的输入字段上使用datepicker帮助...
我有这样的表格:
<table id="reminder">
<tr>
<th>Payment Reminders</th>
<th></th>
<th></th>
<th></th>
</tr>
<tr>
<td><label>Reminder</label></td>
<td><input type="text" name="payreminder[]" id="payreminder" class="input1" size="20" ><script>$('#payreminder').datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'}); </script></td>
<td><label>Description</label></td>
<td><input type="text" class="input1" name="paydescription[]" id="paydescription"></td>
<td> <a href="#" onClick="addReminder('dynamicInputReminder');" title="Add another">Add another</a></td>
</tr>
<tr>
<td colspan="6"><div id="dynamicInputReminder"></div> </td>
</tr>
</table>
用于添加更多提醒的javascript是:
<script type="text/javascript" >
var counterReminder = 1;
var limit = 20;
function addReminder(divName){
if (counterReminder == limit) {
alert("You have reached the limit of adding " + counterReminder+ " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "<td><label>Reminder</label></td><td><input type=\"text\" id=\"payreminder["+counterReminder+"]\" name=\"payreminder["+counterReminder+"]\" class=\"input1\" ></td><td><label>Description</label></td><td><input type=\"text\" id=\"paydescription["+counterReminder+"]\" name=\"paydescription["+counterReminder+"]\" class=\"input1\"></td>";
document.getElementById(divName).appendChild(newdiv);
counterReminder++;
}
}
</script>
问题是:我如何以及在何处调用日期选择器的脚本,以便它适用于动态创建的字段?
<script>$('#payreminder').datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'}); </script>
非常感谢!
答案 0 :(得分:6)
为输入字段使用类而不是id,例如
<input type=\"text\" id=\"payreminder["+counterReminder+"]\" name=\"payreminder["+counterReminder+"]\" class=\"payreminder\" >
<script>
$(document).on('focusin', '.payreminder', function(){
$(this).datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'});
});
</script>
答案 1 :(得分:1)
试试这个
删除您的脚本并将其放在代码的末尾。
注意:ID应该始终是唯一的,所以我在这里使用了类。
将您的ID更改为“payreminder”类。
$(document).find('.payreminder').datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'});
答案 2 :(得分:0)
试试这个:
<script type="text/javascript" >
var counterReminder = 1;
var limit = 20;
function addReminder(divName) {
if (counterReminder == limit) {
alert("You have reached the limit of adding " + counterReminder+ " inputs");
} else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "<td><label>Reminder</label></td><td><input type=\"text\" id=\"payreminder["+counterReminder+"]\" name=\"payreminder["+counterReminder+"]\" class=\"input1\" ></td><td><label>Description</label></td><td><input type=\"text\" id=\"paydescription["+counterReminder+"]\" name=\"paydescription["+counterReminder+"]\" class=\"input1\"></td>";
document.getElementById(divName).appendChild(newdiv);
$(newDiv).find('input').datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'});
counterReminder++;
}
}
</script>
答案 3 :(得分:0)
$(document).on('focusin', 'input[id^=payreminder]', function(){
$(this).datepicker({dateFormat: $.datepicker.W3C, changeMonth: true, changeYear: true, yearRange: '2011:2020'});
});
答案 4 :(得分:0)
在要添加datepicker的每个输入字段上添加一个名为date的类, 现在每次添加新字段时,请调用以下函数
$(".date").datepicker();
答案 5 :(得分:0)
或者,您可以为每个输入使用data-
属性,而不是类。以下内容会在页面加载后立即初始化所有datepicker <input type="text" data-datepicker ...>
标签,然后在添加新提醒后可以再次调用。
function initDatePicker () {
$("input[data-datepicker]").datepicker();
};
$(document).ready(initDatePicker());
此外,我发现每次重新初始化日期选择器<input>
时,都对所有日期选择器function addReminder(divName){
...
$("input[data-datepicker]").datepicker('destroy');
initDatePicker();
...
};
调用destroy()方法很有用;否则,它们似乎会断裂。我使用了以下内容:
datepicker('destroy')
很明显,请确保先致电initDatePicker()
,然后再致电DB_CONNECTION=sqlite
DB_DATABASE="C:/wamp64/www/myapplication/test.sqlite"
,或者每次添加新提醒时,都会清除所有日期选择器。