代码之家  ›  专栏  ›  技术社区  ›  J.Z

如何对具有动态id的字段中的值求和?

  •  -2
  • J.Z  · 技术社区  · 6 年前

    我需要对表单的字段求和。字段ID是动态的。我需要在第三个字段中显示求和的结果。我想知道如何在PHP或JS中做到这一点。

    <input type="number" id="acf-field_5a7cb1f6601f3-1-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][1][field_5a7cb278601f8]" value="10" placeholder="">
    <input type="number" id="acf-field_5a7cb1f6601f3-2-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][2][field_5a7cb278601f8]" value="12" placeholder="">
    <input type="number" id="acf-field_5a7cb1f6601f3-3-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][3][field_5a7cb278601f8]" value="25" placeholder="">
    

    我编辑以明确我需要什么: Example Function in PHP display Field of result... Example display result

    2 回复  |  直到 6 年前
        1
  •  1
  •   Randy Casburn    6 年前

    let total = 0;
    document.querySelectorAll('input[type="number"]').forEach(el=>total+=+el.value);
    document.querySelector('#total').value = total;
    console.log(total);
    <input type="number" id="acf-field_5a7cb1f6601f3-1-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][1][field_5a7cb278601f8]" value="10" placeholder="">
    <input type="number" id="acf-field_5a7cb1f6601f3-2-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][2][field_5a7cb278601f8]" value="12" placeholder="">
    <input type="number" id="acf-field_5a7cb1f6601f3-3-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][3][field_5a7cb278601f8]" value="25" placeholder="">
    <br>
    <label for="total">Total: </label>
    <input id="total">

    不要使用ID,使用 document.querySelectorAll(...) 并使用您熟悉的任何CSS选择器。例如:

     document.querySelectorAll('input[type="number"]').forEach((el)=>{});
    
        2
  •  1
  •   nitsram    6 年前
    var sum = 0;        
    $("input[type=number]").each(function() 
    { 
      if(!isNaN(this.value) && this.value.length!=0) 
      {
        sum += parseFloat(this.value);            
      }         
    });
    

    使用JQuery(在我看来,这是为了避免兼容性问题),这将对所有数字输入的值求和。您可能希望在将来进一步限制这一点。纯JS解决方案如下:

    var sum = 0;        
    document.querySelectorAll("input[type=number]").forEach(function() {
      if(!isNaN(this.value) && this.value.length!=0) 
      {
        sum += parseFloat(this.value);            
      }    
    });