Jquery 单击后添加多个选择元素
我有两个相邻对齐的div和一个ADD按钮Jquery 单击后添加多个选择元素,jquery,html,Jquery,Html,我有两个相邻对齐的div和一个ADD按钮 <div class="_25"> <label for="25">Mode</label> <select name="mode"> <option value="0">Select One</option> <option value="fcl/fcl">FCL/FCL</option> </se
<div class="_25">
<label for="25">Mode</label>
<select name="mode">
<option value="0">Select One</option>
<option value="fcl/fcl">FCL/FCL</option>
</select>
</div>
单击ADD按钮后,我想在数组中附加另一个同名元素。我尝试了各种方法,但在尝试附加它们时没有任何效果。
例如:第一个select元素应该有name=mode[0],第二个mode[1]等等。您尝试过使用内部html吗?一种方法是使用另一个div,该div可以附加所有动态选择元素。在javascript中,您可以使用innerHTML并给它一个样式/名称/id。不需要以这种方式创建名称属性,您可以将mode[]名称属性添加到所选元素中,在服务器端您将拥有一个数组。但是,如果要创建具有不同名称的select元素,可以尝试:
$('#add').click(function(e) {
$('select').last().clone().prop('name', function(_, name){
return name.replace(/\d+/, function(num) {
return +num + 1;
});
}).appendTo('#hell');
});
添加按钮并将选择名称更改为模式[] 在服务器端,变量模式是数组。您可以使用模式[0]进行测试。尝试以下方法:
<input type="button" onclick="add_s();" value="ADD select" />
function add_s() {
var ttl_slcts = $('._25 select').length;
var a = "<select name=mode[" + ttl_slcts + "] ><option>a</option> <option>b</option></select>";
$('._25').append(a);
}
您可以使用jQuery循环遍历每个元素,并在正则表达式的帮助下增加值。您还应该从模式[0]开始,以保持一致性
$('.add').click(function(){
var currentName = $('select:last').attr('name'); // starting name should be mode[0]
var pattern = /^mode\[(\d)\]$/;
var newName = pattern.exec(currentName)[1];
newName++;
newName = "mode["+newName+"]";
$('select').attr('name', newName).appendTo('div._25');
});
不,这是一个要求,用户需要多个下拉字段用于相同的目的,比如本例中的模式。因此我需要提供一个“添加”选项。我相信用户要求在通过添加按钮添加时将每个选择的名称存储在数组中,而不是将原始选择命名为模式[].当你需要时,like按钮在哪里。“地狱”的附属物?!?
<input type="button" onclick="add_s();" value="ADD select" />
function add_s() {
var ttl_slcts = $('._25 select').length;
var a = "<select name=mode[" + ttl_slcts + "] ><option>a</option> <option>b</option></select>";
$('._25').append(a);
}
$('.add').click(function(){
var currentName = $('select:last').attr('name'); // starting name should be mode[0]
var pattern = /^mode\[(\d)\]$/;
var newName = pattern.exec(currentName)[1];
newName++;
newName = "mode["+newName+"]";
$('select').attr('name', newName).appendTo('div._25');
});