克隆表单字段时增加多维数组

时间:2010-12-16 23:20:15

标签: jquery

我有一个表单允许复制一组表单字段(请参阅此处: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][]"  />

我需要这样做的原因是,在提交表单时对问题和答案进行分组。

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) + ']'; });

http://jsfiddle.net/dcUdU/1/

的工作代码

原始回答

使用以下代码

[

已克隆的each输入元素(您需要从最后一组字段中clone

它使用正则表达式查找]和{{1}}内的数字并将其递增1。

示例 http://www.jsfiddle.net/gaby/WZAU6/

function as parameter to the replace method

的参考资料

答案 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));