在previous question中,我学会了如何使用增加的元素ID生成动态表单元素。生成等于动态创建的表单元素的变量
现在,我很难找出一种方法来分配等于动态创建的表单元素的变量。
我的形式具有六个输入与ID作为这样:
box1_
box2_
box3_
box4_
box5_
box6_
形式中的每个克隆,添加递增标记的id的端部,使得所述第一克隆具有1
,结束框第二个克隆的盒子以2
结尾,等等。
这里是我的形式克隆代码,从借来的回答我刚才的问题:
$(document).ready(function() {
// show hidden inputs on POSITIVE selection
$(document).on('change', '.zero_form select.first_input', function() {
var sel = $(this).val();
$(this).parent().find('.hide').toggle(sel == 'POSITIVE');
});
$(document).on('click', '.zero_form .removebutton', function() {
$(this).closest("div").remove();
});
// clone fields
var form_index = 0;
$("#add").click(function() {
form_index++;
$(this).parent().before($("#zero_form").clone().attr("id", "zero_form" + form_index));
$("#zero_form" + form_index).css("display", "inline");
$("#zero_form" + form_index + " :input").each(function() {
$(this).attr("id", $(this).attr("id") + form_index);
});
});
});
我想动态创建,捕捉每一个元素的值,因为它是创建的变量。例如,如果我创建了两个克隆领域,我会投入使用的ID:
box1_1, box2_1, box3_1, box4_1, box5_1, box6_1 &
box1_2, box2_2, box3_2, box4_2, box5_2, box6_2
我希望中的变量这样:
var part1_1 = $('#box1_1').val();
var part2_1 = $('#box2_1').val();
...
var part1_6 = $('#box1_6').val();
var part2_6 = $('#box2_6').val(); etc..
这是我试过的尝试生成动态变量 - 我没有得到任何控制台错误,但我无法验证变量是否存在并可在我的函数中访问?
脚本
function printOut() {
var dxOut = 'Output\n';
var part1_ = [];
var part2_ = [];
var part3_ = [];
var part4_ = [];
var part5_ = [];
var part6_ = [];
// I'm not sure how to set the length of i to the # of inputs, so I chose 30 for now
for (var i=1; i <= 30; i++){
part1_[i] = $('#box1_'+i).val();
part2_[i] = $('#box2_'+i).val();
part3_[i] = $('#box3_'+i).val();
part4_[i] = $('#box4_'+i).val();
part5_[i] = $('#box5_'+i).val();
part6_[i] = $('#box6_'+i).val();
}
return part1_;
return part2_;
return part3_;
return part4_;
return part5_;
return part6_;
dxOut += part1_1 +'\n'+part2_1+'\n'+part3_1;
$('#output').val(dxOut);
}
这里是一个fiddle,以防它帮助。
感谢您的帮助。
感谢您的好解释。这种类型的操作比我一直在做的更复杂一点。我认为你的第二个选项可能工作 - 但我可以使用'values.hasOwnProperty(id)'而不是名字?另外,是否可以使唯一变量等于输入值?我不确定这是否已经是你的榜样想要做的。 – user1837608
是的,你可以使用任何标识符,如ID。这也是这个例子的作用。 'value [$(this).attr('name')] =($(this).val())); });'将输入的值设置为使用其名称的字段。要使用ID,只需将'attr('name')'改为'attr('id')'。 – samanime
再澄清一下,生成的变量如何单独回收?意思是说,如果我只想要说变量的值是指id = box2_2的输入? – user1837608