使用javascript增加输入[]数组数
我的HTMl表单中有以下输入:使用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
<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;
}
}