Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何克隆表单(地址输入)?不起作用_Javascript - Fatal编程技术网

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