我有一个表单允许复制一组表单字段(请参阅此处:http://jsfiddle.net/Sd9Ag/8/)。当输入重复时,如何在name属性中增加数组编号。
例如:
<input type="input" name="question[1]" />
<input type="input" name="questionURL[1]" />
<input type="input" name="answer[1][]" />
<input type="input" name="answerURL[1][]" />
克隆时,增加数组编号:
<input type="input" name="question[2]" />
<input type="input" name="questionURL[2]" />
<input type="input" name="answer[2][]" />
<input type="input" name="answerURL[2][]" />
我需要这样做的原因是,在提交表单时对问题和答案进行分组。
答案 0 :(得分:6)
<强>更新强>
好的,我已经使用了你的jsfiddle(我错过了我的第一个回答)代码并进行了一些修改。
qnote[1]
的问题提示,以避免与答案备注混淆answer[1][1]
,对于第一个问题的第二个答案,answer[1][2]
被命名为answer[2][1]
,对于第二个问题的第一个答案,等等。 elem.name = elem.name.replace(/\[(\d+)\]/,function(str,p1){
return '[' + (parseInt(p1,10)+1) + ']';
});
。原始回答
使用以下代码
[
已克隆的each
输入元素(您需要从最后一组字段中clone
)
它使用正则表达式查找]
和{{1}}内的数字并将其递增1。
答案 1 :(得分:1)
看一下这个:http://jsfiddle.net/sje397/z3SSL/1/
主要的变化是:
var emptyQ = $("li.question").clone(),
emptyA = $("li.answer").clone();
emptyQ.html(emptyQ.html()
.replace("question[" + (nextId - 1), "question[" + nextId)
.replace("qnotes[" + (nextId - 1), "qnotes[" + nextId));
emptyA.html(emptyA.html()
.replace("answer[" + (nextId - 1), "answer[" + nextId)
.replace("anotes[" + (nextId - 1), "anotes[" + nextId));