为克隆的输入提供输入'name'属性,即在列表中



所以这就是我的情况。我有一个无序的列表,在列表中有一组输入和一个可以克隆其中4个输入的按钮。由于数据来自后端,所以可以有一个或1000个列表集。因此,我试图根据列表索引号动态地为列表中的每个输入赋予名称属性,并为克隆的输入找到一种方法。如果您查看类pm providerNum,我正在执行与提供程序名称类似的操作,因此它基于列表数量。如果我添加更多列表,则提供程序名称会自动更改。回到名称,所以对于李数字1,除了动态创建的输入之外,在每个输入上都是如此。每个输入名称都像这个

在添加位置等动态输入上,输入名称为:

<input type="text" name="p-address-0-dynamic#[dynamicnumber]" class="pm-
psubmit" placeholder="First Name" required="">

等等。。。。dynamicnumber是表示新创建的输入数量的数字。因此,如果没有向提供程序1/索引1添加其他位置,则上的每个输入名称动态输入将是:

<input type="text" name="p-address-0-dynamic#[0]" class="pm-psubmit" 
placeholder="First Name" required="">

如果我添加一个额外的位置。这些输入将被命名为

<input type="text" name="p-address-0-dynamic#[1]" class="pm-psubmit" 
placeholder="First Name" required="">

清单2/索引2

<input type="text" name="p-address-1-dynamic#[0]" class="pm-psubmit" 
placeholder="First Name" required="">

如果我添加一个额外的位置。这些输入将被命名为

<input type="text" name="p-address-1-dynamic#[1]" class="pm-psubmit" 
placeholder="First Name" required="">

我花了一些时间提出这个问题,它可能会让人困惑,希望你们明白我想说的。我尝试了很多不同的方法来做到这一点,但都没有成功。希望我能得到一些见解

$('.pm-providerNum').each(function (index) {
$(this).html('Providor ' + (index + 1));
});
$("div.pm-providor-first-wrap").each(function (index) {
$(this).find('input').each(function () {
$(this).attr('name', $(this).attr('name')+ '-' + index);
})
});
$(document).on("click", ".pm-add-loc-Class", function () {
var $sect = $(this).closest(".pm-loc-section");
$sect.find(".pm-loc-inputWrapper").eq(0).clone().show().insertBefore($sect.find(".pm-loc-controls")).find('input').val('');
});
<!DOCTYPE html>
<html>
<head>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
	</script>
	<title></title>
</head>
<body>
	<div class="col-sm-12 pm-submitProvidor">
		<ul>
			<li>
				<div class="">
					<h4><span class="pm-providerNum"></span></h4>
					<div class="pm-providor-first-wrap">
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-first_name" placeholder="First Name" required="" type="text">
							</div>
							<div class="col-md-1">
								<input class="pm-psubmit" name="p-middle_name" placeholder="M" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-last_name" placeholder="Last Name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-dob" placeholder="Date of birth" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_num" placeholder="Personal Phone #" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_email" placeholder="Personal Email" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-degree" placeholder="Degree" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-d_date" placeholder="Date" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-dobe" placeholder="Data of board exam" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-nri_num" placeholder="NRI #" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-prim_spec" placeholder="Primary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-sec_spec" placeholder="Secondary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_name" placeholder="Practice name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_num" placeholder="Practice Phone #" required="" type="text">
							</div>
						</div>
					</div>
					<div class="row" style="padding-left:15px; padding-right:15px;">
						<div class="pm-loc-section">
							<div class="pm-loc-inputWrapper">
								<div class="row">
									<div class="col-md-3">
										<input class="pm-psubmit" placeholder="Practice Physical Address" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="City" required="" type="text">
									</div>
									<div class="col-md-1">
										<input class="pm-psubmit" placeholder="State" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="Zip" required="" type="text">
									</div>
									<div class="col-md-4"></div>
								</div>
							</div>
							<div class="pm-loc-controls text-right">
								<input class="pm-add-loc-Class" type="button" value="+ Add Another Location">
							</div>
						</div>
					</div>
				</div>
			</li>
			<li>
				<div class="">
					<h4><span class="pm-providerNum"></span></h4>
					<div class="pm-providor-first-wrap">
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-first_name" placeholder="First Name" required="" type="text">
							</div>
							<div class="col-md-1">
								<input class="pm-psubmit" name="p-middle_name" placeholder="M" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-last_name" placeholder="Last Name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-dob" placeholder="Date of birth" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_num" placeholder="Personal Phone #" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_email" placeholder="Personal Email" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-degree" placeholder="Degree" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-d_date" placeholder="Date" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-dobe" placeholder="Data of board exam" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-nri_num" placeholder="NRI #" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-prim_spec" placeholder="Primary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-sec_spec" placeholder="Secondary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_name" placeholder="Practice name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_num" placeholder="Practice Phone #" required="" type="text">
							</div>
						</div>
					</div>
					<div class="row" style="padding-left:15px; padding-right:15px;">
						<div class="pm-loc-section">
							<div class="pm-loc-inputWrapper">
								<div class="row">
									<div class="col-md-3">
										<input class="pm-psubmit" placeholder="Practice Physical Address" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="City" required="" type="text">
									</div>
									<div class="col-md-1">
										<input class="pm-psubmit" placeholder="State" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="Zip" required="" type="text">
									</div>
									<div class="col-md-4"></div>
								</div>
							</div>
							<div class="pm-loc-controls text-right">
								<input class="pm-add-loc-Class" type="button" value="+ Add Another Location">
							</div>
						</div>
					</div>
				</div>
			</li>
			<li>
				<div class="">
					<h4><span class="pm-providerNum"></span></h4>
					<div class="pm-providor-first-wrap">
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-first_name" placeholder="First Name" required="" type="text">
							</div>
							<div class="col-md-1">
								<input class="pm-psubmit" name="p-middle_name" placeholder="M" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-last_name" placeholder="Last Name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-dob" placeholder="Date of birth" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_num" placeholder="Personal Phone #" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-personal_email" placeholder="Personal Email" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-degree" placeholder="Degree" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-d_date" placeholder="Date" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-dobe" placeholder="Data of board exam" required="" type="text">
							</div>
							<div class="col-md-3">
								<input class="pm-psubmit" name="p-nri_num" placeholder="NRI #" required="" type="text">
							</div>
						</div>
						<div class="row">
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-prim_spec" placeholder="Primary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-sec_spec" placeholder="Secondary Speciality" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_name" placeholder="Practice name" required="" type="text">
							</div>
							<div class="col-md-2">
								<input class="pm-psubmit" name="p-practice_num" placeholder="Practice Phone #" required="" type="text">
							</div>
						</div>
					</div>
					<div class="row" style="padding-left:15px; padding-right:15px;">
						<div class="pm-loc-section">
							<div class="pm-loc-inputWrapper">
								<div class="row">
									<div class="col-md-3">
										<input class="pm-psubmit" placeholder="Practice Physical Address" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="City" required="" type="text">
									</div>
									<div class="col-md-1">
										<input class="pm-psubmit" placeholder="State" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="Zip" required="" type="text">
									</div>
									<div class="col-md-4"></div>
								</div>
							</div>
							<div class="pm-loc-controls text-right">
								<input class="pm-add-loc-Class" type="button" value="+ Add Another Location">
							</div>
						</div>
					</div>
				</div>
			</li>
		</ul>
</div>
</body>
</html>

我会这样做:对于每个"providor"组,所有的输入名称属性都以类似provider[index]的东西开头,然后让每个特定字段的名称成为第二维输入:provider[1][firstname]provider[1][lastname]等。

然后,对于您的位置字段,在末尾添加一个额外的索引,以指示它属于哪个位置组:

  • provider[1][city][1]
  • provider[1][state][1]

  • provider[1][city][2]

  • provider[1][state][2]

等。

您还可以使用.data()函数来存储提供者索引和位置索引,这种方式以后可以更容易地获取。

下面是一个工作示例:

$('.pm-providerInputGroup').each(function (index)
{

	var inputGroupId = index + 1;
	var groupEl = $(this);
	
	groupEl.data('groupId', inputGroupId);
	
	groupEl.find('.pm-providerNum').html('Providor ' + inputGroupId);
	
	groupEl.find('.pm-psubmit').each(function()
	{
		var cleanName = $(this).attr('placeholder').toLowerCase().replace(/[^a-z0-9]+/g, '');
		$(this).attr('name', 'providor[' + inputGroupId + '][' + cleanName + ']');
	});
	
	groupEl.find('.pm-loc-section .pm-loc-inputWrapper').each(function(index2)
	{
		var locGroupId = index2 + 1;
		
		$(this).data('locGroupId', locGroupId);
		
		$(this).find('.pm-psubmit').each(function()
		{
			var curName = $(this).attr('name');
			$(this).attr('name', curName + '[' + locGroupId + ']');
		});
	});

});


$(document).on("click", ".pm-add-loc-Class", function()
{
var $sect = $(this).closest(".pm-loc-section");

var lastLocGroup = $sect.find(".pm-loc-inputWrapper").eq(-1);

	var lastLocGroupId = lastLocGroup.data('locGroupId');

var newLocGroup = lastLocGroup.clone();

	var newLocGroupId = lastLocGroupId+1;

newLocGroup.show().insertBefore($sect.find(".pm-loc-controls")).find('input').val('');

newLocGroup.data('locGroupId', newLocGroupId);

newLocGroup.find('.pm-psubmit').each(function(index2)
	{
		var curName = $(this).attr('name');
		var newName = curName.replace(/(w+[[^]]+][[^]]+])([[^]]+])/, '$1[' + newLocGroupId + ']' );
		$(this).attr('name', newName);
	});
});	
<!DOCTYPE html>
<html>
<head>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
	<title></title>
</head>
<body>
	<div class="col-sm-12 pm-submitProvidor">
		<ul>
			<li>
				<div class="pm-providerInputGroup">

					<h4><span class="pm-providerNum"></span></h4>

					<input class="pm-psubmit" placeholder="First Name" required="" type="text">
					<input class="pm-psubmit" placeholder="M" type="text">
					<input class="pm-psubmit" placeholder="Last Name" required="" type="text">
					<input class="pm-psubmit" placeholder="Date of birth" required="" type="text">
					<input class="pm-psubmit" placeholder="Personal Phone #" type="text">
					<input class="pm-psubmit" placeholder="Personal Email" required="" type="text">
					<input class="pm-psubmit" placeholder="Degree" required="" type="text">
					<input class="pm-psubmit" placeholder="Date" required="" type="text">
					<input class="pm-psubmit" placeholder="Data of board exam" required="" type="text">
					<input class="pm-psubmit" placeholder="NRI #" required="" type="text">
					<input class="pm-psubmit" placeholder="Primary Speciality" required="" type="text">
					<input class="pm-psubmit" placeholder="Secondary Speciality" required="" type="text">
					<input class="pm-psubmit" placeholder="Practice name" required="" type="text">
					<input class="pm-psubmit" placeholder="Practice Phone #" required="" type="text">

					<div class="row" style="padding-left:15px; padding-right:15px;">
						<div class="pm-loc-section">
							<div class="pm-loc-inputWrapper">
								<div class="row">
									<div class="col-md-3">
										<input class="pm-psubmit" placeholder="Practice Physical Address" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="City" required="" type="text">
									</div>
									<div class="col-md-1">
										<input class="pm-psubmit" placeholder="State" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="Zip" required="" type="text">
									</div>
									<div class="col-md-4"></div>
								</div>
							</div>
							<div class="pm-loc-controls text-right">
								<input class="pm-add-loc-Class" type="button" value="+ Add Another Location">
							</div>
						</div>
					</div>
				</div>
			</li>
			<li>
				<div class="pm-providerInputGroup">

					<h4><span class="pm-providerNum"></span></h4>

					<input class="pm-psubmit" placeholder="First Name" required="" type="text">
					<input class="pm-psubmit" placeholder="M" type="text">
					<input class="pm-psubmit" placeholder="Last Name" required="" type="text">
					<input class="pm-psubmit" placeholder="Date of birth" required="" type="text">
					<input class="pm-psubmit" placeholder="Personal Phone #" type="text">
					<input class="pm-psubmit" placeholder="Personal Email" required="" type="text">
					<input class="pm-psubmit" placeholder="Degree" required="" type="text">
					<input class="pm-psubmit" placeholder="Date" required="" type="text">
					<input class="pm-psubmit" placeholder="Data of board exam" required="" type="text">
					<input class="pm-psubmit" placeholder="NRI #" required="" type="text">
					<input class="pm-psubmit" placeholder="Primary Speciality" required="" type="text">
					<input class="pm-psubmit" placeholder="Secondary Speciality" required="" type="text">
					<input class="pm-psubmit" placeholder="Practice name" required="" type="text">
					<input class="pm-psubmit" placeholder="Practice Phone #" required="" type="text">

					<div class="row" style="padding-left:15px; padding-right:15px;">
						<div class="pm-loc-section">
							<div class="pm-loc-inputWrapper">
								<div class="row">
									<div class="col-md-3">
										<input class="pm-psubmit" placeholder="Practice Physical Address" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="City" required="" type="text">
									</div>
									<div class="col-md-1">
										<input class="pm-psubmit" placeholder="State" required="" type="text">
									</div>
									<div class="col-md-2">
										<input class="pm-psubmit" placeholder="Zip" required="" type="text">
									</div>
									<div class="col-md-4"></div>
								</div>
							</div>
							<div class="pm-loc-controls text-right">
								<input class="pm-add-loc-Class" type="button" value="+ Add Another Location">
							</div>
						</div>
					</div>

				</div>
			</li>
		</ul>
	</div>

</body>
</html>

最新更新