使用javascript增加输入[]数组数

使用javascript增加输入[]数组数,javascript,jquery,Javascript,Jquery,我的HTMl表单中有以下输入: <input type='text' name='speaker[][]' class='form-control mb5' placeholder='Speaker' value='' /> <input type='text' name='seminartitle[][]' class='form-control mb5' placeholder='Seminar Title' value='' /> 第二天: <input t

我的HTMl表单中有以下输入:

<input type='text' name='speaker[][]' class='form-control mb5' placeholder='Speaker' value='' />
<input type='text' name='seminartitle[][]' class='form-control mb5' placeholder='Seminar Title' value='' />
第二天:

<input type='text' name='speaker[1][]' class='form-control mb5' placeholder='Speaker' value='' />
<input type='text' name='seminartitle[1][]' class='form-control mb5' placeholder='Seminar Title' value='' />


等等。我不知道如何在javascript/jquery中执行此操作。

克隆输入后,可以像这样提取它的
name
属性。(假设您已将输入保存在名为$clonedInput的变量中)

var speakerName=$clonedInput.attr('name')

然后使用正则表达式(RegEx)确定它是否已经有一些内容,以及它是否没有为其分配0

var speakerIndex = speakerName.match(\[(\d)?\]\[\]);
speakerIndex = parseInt(speakerIndex[1]);
speakerIndex = isNaN(speakerIndex) ? 0 : speakerIndex + 1; 
最后,我们更改克隆元素的属性

$clonedInput.attr('name','speaker['+speakerIndex+'][]';

一些澄清:


正则表达式正在检查以查找以下模式
[][]
,这意味着您可以对两个
输入使用相同的正则表达式,因为它不检查是
说话人还是
seminartitle
。这就是我们访问
speakerIndex[1]的原因
是指正则表达式在假设数字周围有一个捕获组。

您可以通过将当前名称值替换为此函数的结果来添加您的数字:

function addNumber(num, inputName, position){
    if(inputName !== "speaker[][]"){
        return null;
    }else{
        var res = [inputName.slice(0, position), num, inputName.slice(position)].join('');
        return res;
    }
}
with num:您要输入的数字 inputName:要更改的输入的输入名称 位置:要在inputName中放置num的位置


您只需将输入的le名称替换为函数的返回值。

您可以共享用于复制输入的代码吗?@GMchris its just
$.clone();
谢谢,虽然我实际上没有使用您给我的正则表达式,但我确实使用了提取名称然后再次替换的方法。
function addNumber(num, inputName, position){
    if(inputName !== "speaker[][]"){
        return null;
    }else{
        var res = [inputName.slice(0, position), num, inputName.slice(position)].join('');
        return res;
    }
}