【问题标题】:Get values from checkbox and send them to input text从复选框获取值并将它们发送到输入文本
【发布时间】:2022-01-13 14:05:02
【问题描述】:

正如您在示例中看到的那样,我试图在检查输入后立即提取所有输入值,并将它们打印到将通过邮件发送的输入文本中。我现在无法澄清,因为我只能打印该输入中的最后一个选项,而不是三个。

我认为错误是我应该在 for 循环之外捕获结果,但我不知道该怎么做。

 const groupInput1 = document.getElementsByName('glassLeistung');
 const output = document.getElementById('glassType');
 const go = document.getElementById('go');
 
  go.addEventListener("click", event => {

    for (let i = 0; i < groupInput1.length; i++) {
       if (groupInput1[i].checked) {
           console.log(groupInput1[i].value);
           output.value = groupInput1[i].value + ''
       }

    }
  })

 
<input type="checkbox" class="selected" id="glass" name="glassLeistung"
value="Glass" autocomplete="off">
                                                       
<input type="checkbox" id="rahmen" class="selected" name="glassLeistung"
value="Rahmen" autocomplete="off">
                                                       
<input type="checkbox" id="falzen" class="selected" name="glassLeistung"
value="Falzen" autocomplete="off">



<input type="text" name="glassType-420" value="" size="40"  id="glassType" aria-invalid="false">

<button id="go">go</button>

如果有人可以帮助我,那就太棒了。谢谢

【问题讨论】:

  • 您在每次循环迭代中覆盖output.value。你可能想要output.value += ...

标签: javascript html forms


【解决方案1】:

const groupInput1 = document.getElementsByName('glassLeistung');
 const output = document.getElementById('glassType');
 const go = document.getElementById('go');
 
  go.addEventListener("click", event => {
    output.value=''
    for (let i = 0; i < groupInput1.length; i++) {
       if (groupInput1[i].checked) {
           console.log(groupInput1[i].value);
           output.value = output.value + groupInput1[i].value + ' '
       }

    }
  })
<input type="checkbox" class="selected" id="glass" name="glassLeistung"
value="Glass" autocomplete="off">
                                                       
<input type="checkbox" id="rahmen" class="selected" name="glassLeistung"
value="Rahmen" autocomplete="off">
                                                       
<input type="checkbox" id="falzen" class="selected" name="glassLeistung"
value="Falzen" autocomplete="off">



<input type="text" name="glassType-420" value="" size="40"  id="glassType" aria-invalid="false">

<button id="go">go</button>

【讨论】:

    【解决方案2】:

    只需添加一个变量来收集值,然后在循环后立即添加它们。

    const groupInput1 = document.getElementsByName('glassLeistung');
     const output = document.getElementById('glassType');
     const go = document.getElementById('go');
     
      go.addEventListener("click", event => {
        const collectHere = [];
        for (let i = 0; i < groupInput1.length; i++) {
           if (groupInput1[i].checked) {
               console.log(groupInput1[i].value);
               collectHere.push(groupInput1[i].value);
           }
        }
        
        output.value = collectHere.join(' - ');
      })
    <input type="checkbox" class="selected" id="glass" name="glassLeistung"
    value="Glass" autocomplete="off">
                                                           
    <input type="checkbox" id="rahmen" class="selected" name="glassLeistung"
    value="Rahmen" autocomplete="off">
                                                           
    <input type="checkbox" id="falzen" class="selected" name="glassLeistung"
    value="Falzen" autocomplete="off">
    
    
    
    <input type="text" name="glassType-420" value="" size="40"  id="glassType" aria-invalid="false">
    
    <button id="go">go</button>

    【讨论】:

    • 另一种选择是将“更改”事件处理程序挂钩到每个复选框 - 在所有 groupInput1 的循环中
    • 是的,解决这个任务有很多选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多