Javascript-复制字段值而不知道所有字段
我有一些关联在一起的输入字段,当在“父”字段中输入内容时,需要将值从“父”字段复制到“子”字段。简而言之,它应该是这样工作的Javascript-复制字段值而不知道所有字段,javascript,html,events,dom,input,Javascript,Html,Events,Dom,Input,我有一些关联在一起的输入字段,当在“父”字段中输入内容时,需要将值从“父”字段复制到“子”字段。简而言之,它应该是这样工作的 输入内容: 看看会发生什么: var form=document.getElementById('form1'); form.elements.parent1.onblur=函数(){ var form=this.form; form.elements.child1.value=form.elements.parent1.value; }; 简单。现在问题来了:我不知
输入内容:
看看会发生什么:
var form=document.getElementById('form1');
form.elements.parent1.onblur=函数(){
var form=this.form;
form.elements.child1.value=form.elements.parent1.value;
};
简单。现在问题来了:我不知道表单将有多少字段(这些字段是动态创建的)。我所知道的是,父/子字段的数量总是相同的,它们的名称也是相同的。因此,形式可能如下所示:
<input name="parent[59]"> <input name="child[59]">
<input name="parent[87]"> <input name="child[87]">
……等等。是的,字段名是相同的,只是编号(因为这些名称需要作为数组提交)不同
我如何重写JS代码,这样当用户在父[59]
中输入某个内容时,其值会复制到子[59]
,当用户在父[87]
中输入某个内容时,其值会复制到子[87]
,等等
当输入字段的名称包含方括号时,我甚至无法使用单个字段
(是的,我尝试用
\
转义括号,但没有成功)您可以基于属性将所有元素作为目标,然后从名称中获取数字
document.querySelectorAll('[name^=parent]').forEach(函数(elem){
元素addEventListener('input',function(){
var n=this.name.split('[').pop();
document.querySelector('[name=“child['+n+'“]')。value=this.value;
});
});
一个非常简单的解决方案是使用侦听DOM上的所有输入事件,然后如果目标(即)元素具有包含字符串文字“parent”(检查使用)的name属性,则将其替换为“child”(使用),并使用该name属性更新元素
document.addEventListener('input',函数(inputEvent){
if(inputEvent.target.name.indexOf('parent')>-1){
var childName=inputEvent.target.name.replace('parent','child');
document.forms[0]。元素[childName]。值=inputEvent.target.value;
}
});
你的问题的全部内容必须在你的问题中,而不仅仅是链接。链接会腐烂,使问题及其答案在将来对人们毫无用处,人们不必离开网站来帮助你。这就是为什么SO不允许你将JSFIDLE链接作为实际链接发布。下次,请不要忽略此消息。在e问题,理想情况下使用堆栈片段(工具栏按钮)使其可运行。更多:在一位4岁以上的会员身上看到这一点非常令人惊讶,他之前有55个问题,15个答案。天哪,这是我在这里收到的最快的解决方案之一(特别是因为它是一个包含多行代码的解决方案).非常感谢。谢谢,这个解决方案看起来非常优雅。
<input name="parent[59]"> <input name="child[59]">
<input name="parent[87]"> <input name="child[87]">