Javascript 如何克隆表单(地址输入)?不起作用
如何克隆表单(地址输入)?不起作用 如何解决这个问题 我想这样做,当用户删除输入,然后添加它,它应该是一个积极的输入再次Javascript 如何克隆表单(地址输入)?不起作用,javascript,Javascript,如何克隆表单(地址输入)?不起作用 如何解决这个问题 我想这样做,当用户删除输入,然后添加它,它应该是一个积极的输入再次 $('.add_input')。等式(0)。单击(函数(){ 形式_a++; var formhtml=$('#divform_a.form').eq(0.html().toString(); formhtml=formhtml.replace(/form_a/g,'form_item'+form_a); $('#divform_a').eq(0).append(''+for
$('.add_input')。等式(0)。单击(函数(){
形式_a++;
var formhtml=$('#divform_a.form').eq(0.html().toString();
formhtml=formhtml.replace(/form_a/g,'form_item'+form_a);
$('#divform_a').eq(0).append(''+formhtml+'');
focus_map_location=jQuery('#divform_a.form:last.map_location');
$(“#divform_a.form:last.address”).removeAttr('id');
地址形式=$(“#地址”).parent();
$(“#address”).clone(true).prependTo(address#form).removeAttr('id');
address_name=$(“#divform_a.form:last.address”).attr('name');
$(“#divform_a.form:last.address”).remove();
$(“#地址”).prependTo($(“#divform#a.form:last”).attr('name',address#name).val('');
});
您的问题似乎在这两行
address_form = $("#address").parent();
$("#address").clone(true).prependTo(address_form).removeAttr('id');
您的代码没有将id设置为新创建的输入
标记。删除id为的原始元素后,prepen将停止工作。而且,这似乎比它应该的复杂得多
这就是复制(以及使名称标记正常工作)所需的全部内容
编辑:
这是你的零钱。最后的下一行将#address
恢复到第一个输入,现在复制功能正常工作
$("#divform_a .form:first .address").attr('id', 'address');
我仍然建议首先查看一下代码,然后尝试清理。或者至少,从中学习:)
第二次编辑:
在地图提琴中,只为第一个字段初始化自动完成。你应该这样做
$('.address').each(function(){
var autocomplete = new google.maps.places.Autocomplete(this);
autocomplete.bindTo('bounds', map);
autocomplete.setTypes([]);
google.maps.event.addListener(autocomplete,'place_changed', function() {
infowindow.close();
markerPoint.setVisible(false);
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
});
});
});
这将自动完成两个字段。克隆会自动拾取属性。您的问题似乎在这两行
address_form = $("#address").parent();
$("#address").clone(true).prependTo(address_form).removeAttr('id');
您的代码没有将id设置为新创建的输入
标记。删除id为的原始元素后,prepen将停止工作。而且,这似乎比它应该的复杂得多
这就是复制(以及使名称标记正常工作)所需的全部内容
编辑:
这是你的零钱。最后的下一行将#address
恢复到第一个输入,现在复制功能正常工作
$("#divform_a .form:first .address").attr('id', 'address');
我仍然建议首先查看一下代码,然后尝试清理。或者至少,从中学习:)
第二次编辑:
在地图提琴中,只为第一个字段初始化自动完成。你应该这样做
$('.address').each(function(){
var autocomplete = new google.maps.places.Autocomplete(this);
autocomplete.bindTo('bounds', map);
autocomplete.setTypes([]);
google.maps.event.addListener(autocomplete,'place_changed', function() {
infowindow.close();
markerPoint.setVisible(false);
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
});
});
});
这将自动完成两个字段。克隆会自动拾取属性。问题是某些功能部分基于此代码,不希望进行彻底更改。我认为克隆会更安全。我想是吧。但是如果你真的想保持原样,那么你应该在你的点击函数的末尾添加一行,把id属性放回原处。知道吗,你可以在JSFIDLE中明确地告诉我,我做了一些更改,并在我的答案中添加了一个更新的提琴。你看了吗?让我知道如果你在里面看到了什么wierd这个代码与我的非常不同,我尝试了许多不同的方法,但仍然不起作用我认为问题在这里(没有这一行,脚本工作得很好)
$(“#divform_a.form:last.address”).removeAttr('id');地址形式=$(“#地址”).parent()代码>但是我需要这个地址id
问题是一些功能部分基于此代码,不想进行彻底的更改。我认为克隆会更安全。我想是吧。但是如果你真的想保持原样,那么你应该在你的点击函数的末尾添加一行,把id属性放回原处。知道吗,你可以在JSFIDLE中明确地告诉我,我做了一些更改,并在我的答案中添加了一个更新的提琴。你看了吗?让我知道如果你在里面看到了什么wierd这个代码与我的非常不同,我尝试了许多不同的方法,但仍然不起作用我认为问题在这里(没有这一行,脚本工作得很好)$(“#divform_a.form:last.address”).removeAttr('id');地址形式=$(“#地址”).parent()代码>但我需要这个地址id