Из вашего вопроса не очень понятно, чего вы пытаетесь достичь.Но я предполагаю, что из вашей разметки вы создаете что-то, что позволит пользователю добавлять несколько «местоположений» в объекте location_wrapper.Подобные вещи обычно начинаются с разметки, как вы показали, предоставляя пользователю одну пустую форму «местоположение» для заполнения (в данном случае 3 поля);и кнопку, которую они могут щелкнуть, чтобы добавить дополнительные блоки «расположение» по мере необходимости.
Предполагая, что это то, что вы делаете, мое первое предложение будет состоять в том, что вместо клонирования трех полей формы по отдельностидолжен клонировать только свой родительский контейнер, "location_0".Нечто подобное должно сработать:
$('#location_0').clone().appendTo('#locations_wrapper');
Это скопирует весь блок - и вам не нужно беспокоиться об изменении идентификаторов вещей, jQuery и / или браузер позаботятсячтобы убедиться, что все имеет уникальный идентификатор за кулисами.
Теперь, при условии, что ваша разметка находится в форме, самый простой способ вернуть информацию на сервер - просто отправить форму,Пост формы будет содержать несколько полей с одним и тем же именем - что полностью допустимо, и большинство языков на стороне сервера имеют простой способ справиться с ним.
В php параметры запроса с несколькими значениями входят какмассив.Так что в php вы можете сделать что-то вроде этого:
<?php
$field_names = ['locations_province', 'locations_city', 'locations_town'];
$locations = array();
foreach( $field_names as $fieldname ) {
$temp = (array)$_REQUEST[$fieldname];
for( $i=0; $i<count($temp); ++$i ) {
if( !isset($locations[$i]) ) $locations[$i] = array();
$locations[$i][$fieldname] = $temp[$i];
}
}
Если вы хотите объединить все это в javascript, вы можете получить доступ к вашим группам полей следующим образом:
var allLocations = [];
$(".locations").each( function(i, location) {
// for each location block
location = $(location);
var loc = {
'locations_province' : $("select[name='locations_province']", location).val(),
'locations_city' : $("select[name='locations_city']", location).val(),
'locations_towns' : $("input[name='locations_towns']", location).val()
};
allLocations.push( loc );
});
// allLocations will contain a list of objects with properties representing
// your locations. at this point, you can do whatever you want with 'em
// send them up via Ajax, or whatever.
goodудачи!