javascript - 将事件添加到 HTML 输入数组的所有元素并获取数组中的值

标签 javascript jquery html

我有一行有 4 个输入:

<div id="productRow1" class="productRow">
    <input type="text" name="numbers[]">
    <input type="number" name="quantities[]">
    <input type="text" name="levels[]">
    <input type="number" name="prices[]">
</div>

我有一个“添加另一个产品”按钮,用户可以通过单击该按钮添加另一行。生成的行将如下所示,具有唯一的 div id:

<div id="productRow2" class="productRow">
    <input type="text" name="numbers[]">
    <input type="number" name="quantities[]">
    <input type="text" name="levels[]">
    <input type="number" name="prices[]">
</div>

我有一个用于所有行的包装 div,如下所示:

<div class="input_fields_wrap">
    <div id="productRow1" class="productRow">...</div>
    <div id="productRow2" class="productRow">...</div>
    ...
</div>

当单击“添加另一个产品”按钮时,如何使用唯一的 div 行 id 动态添加新行:

var wrapper = $(".input_fields_wrap");
$(wrapper).append('<div ' + divId + ' class="productRow"' + '>
                <input type="text" name="numbers[]"/>' +
                '<input type="number" name="quantities[]"/>' +
                '<input type="text" name="levels[]"/>' +
                '<input type="number" name="prices[]"/>');

我还有另一个文本框,它应该立即显示总价。因此,我需要在用户输入每行的价格后获取每行的价格数据。我尝试向所有 prices[] 字段添加一个事件,如下所示:

$(function () {
    $('input[name="prices[]"]').blur(function () {
        alert('testAlert');
    });
});

但是没有成功。我还尝试将 onblur 事件添加到现有的和生成的输入字段中,以获取如下价格:

<input type="number" name="prices[]" onblur="calculatePrice()">

具有以下功能:

function calculateTotal() {
    alert('testAlert');
    var prices = $('input[name="prices[]"]').map(function () {
        alert(this.value);
        return this.value;
    }).get();
}

我还尝试指定如下输入字段:'input[name^="prices"]' 并添加如下事件:

$('input[name="prices[]"]').on('blur', function() {
    alert('testAlert');
});

在我将 class='priceClass' 添加到价格输入字段后,按类添加事件:

<input type="number" name="prices[]" class="priceClass">
$('.priceClass').on('blur', function() {
    alert('testAlert');
});

这些都没有触发该事件。那么如何向 HTML 输入数组的所有元素添加事件,并在事件触发后获取输入数组中的所有值呢?

最佳答案

您可能需要更多类似的东西:

$(function(){

function getVals(){
  var n = 0;
  $("input[name='prices[]']").each(function(i, e){
    n += +$(e).val();
  });
  return n;
}
$("input[name='prices[]']").change(function(){
  $('#out').html(getVals());
});
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>
<body>
  <input type='number' name='prices[]' value='10' multiple='multiple' />
  <input type='number' name='prices[]' value='2' multiple='multiple' />
  <input type='number' name='prices[]' value='7' multiple='multiple' />
  <input type='number' name='prices[]' value='1' multiple='multiple' />
  <div id='out'></div>
</body>
</html>

关于javascript - 将事件添加到 HTML 输入数组的所有元素并获取数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41134317/

相关文章:

javascript - 导航到场景但没有返回

php - 禁用提交按钮停止提交表单 PHP/Javascript

javascript - 隐藏的嵌套导航在悬停之前显示

javascript - 在谷歌地图标记标签的 Font Awesome 图标标记中放置一个数字

javascript - 在 VS Code 中使用 Node shim 调试 React Native

javascript - 获取 Google Static Maps API 的西南 Angular 和东北 Angular

javascript - 如何从按钮数组中获取特定数组值

html - W3C 验证 - 为什么 &lt;header&gt; 标签不被接受?

html - 将元素放在窗口的右上角

javascript - 为网页上的特定按钮创建快捷键 | Chrome