我在datepicker / autocomplete和replacewith()之间遇到了一个愚蠢的问题。我有一个表单,用户可以在其中添加多行并删除它们。为了做到这一点,我已经设置了一个克隆。一旦克隆完成,我做一个replaceWith()以更改输入的名称,因为attr函数通过用SubmitName替换名称来使IE变得愚蠢。
replacewith工作正常,但是datepicker功能或自动完成功能不再起作用。仅供参考,这个块就在HTML表单之后。我已经尝试了几种方式,如下所示,但没有效果:
<script type="text/javascript">
var uniqueLeg = 1;
$('.addLeg').click(function() {
var copy = $('#Leg').clone(true,true);
var formId = 'Leg' + window.uniqueLeg;
copy.attr('id', formId );
copy.removeAttr('style');
copy.find(':input#tripdate').each(function() {
$(this).replaceWith("<input type='" + $(this).attr("type") + "' id='tripdate" + window.uniqueLeg + "' name='" + $(this).attr("name") + window.uniqueLeg + "' class='datepicker' />");
$('.datepicker').datepicker({ dateFormat: "dd/mm/yy" });
});
$('#trip').append(copy);
window.uniqueLeg++;
});
或
copy.find(':input#tripdate').each(function() {
$(this).replaceWith("<input type='" + $(this).attr("type") + "' id='tripdate" + window.uniqueLeg + "' name='" + $(this).attr("name") + window.uniqueLeg + "' class='datepicker' />");
$(this).datepicker({ dateFormat: "dd/mm/yy" });
});
或
copy.find(':input#tripdate').each(function() {
$(this).replaceWith("<input type='" + $(this).attr("type") + "' id='tripdate" + window.uniqueLeg + "' name='" + $(this).attr("name") + window.uniqueLeg + "' class='datepicker' />");
$('tripdate'+window.uniqueLeg).datepicker({ dateFormat: "dd/mm/yy" });
});
无效。 jquery-ui在页面顶部声明
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<TITLE> Dev page </TITLE>
<link rel="stylesheet" href="src/jquery-ui.css" />
<script src="src/jquery-1.9.1.js"></script>
<script src="src/jquery-ui.js"></script>
<SCRIPT language="javascript">
$(function() {
$( ".datepicker" ).datepicker({ dateFormat: "dd/mm/yy" });
$( ".aptsearch" ).autocomplete({source:'suggest_apt.php', minLength:3});
$( ".actsearch" ).autocomplete({
source:'suggest_act.php',
minLength:3,
select: function (event, ui) {
var id = $(this).attr("id");
loadAC(ui.item.value, id);
}
});
});...
除此之外,即使是addClass或RemoveClass函数似乎也不起作用。请指教,我看不出有什么遗漏。 欢迎提出建议。
新闻行之前的html结构
<INPUT id=tripdate0 class="datepicker hasDatepicker" name=tripdate0 jQuery191007588717778684739="15">
新闻行后
<INPUT id=tripdate1 class=datepicker name=tripdate1>
答案 0 :(得分:0)
好的,我发现问题是什么。 AddClass和.datepicker无法处理输入id已被replacewith更改的函数。 解决此问题的唯一方法是在之后添加一个附加函数,选择新修改的输入并添加类datepicker + initialize .datepicker()
看起来有点脏,但至少起作用。如果您有一些改进建议,请随时分享:)
copy.find(':input#tripdate'+window.uniqueLeg).each(function() {
$(this).addClass('datepicker');
$(this).datepicker({ dateFormat: "dd/mm/yy" });
});