使用Jquery我需要添加所有输入值。
使用jquery,有没有办法在元素名称中使用regix 喜欢 项[regix_goes_here] [借记]
我需要所有输入的值,我希望它们每个都递增。
我的代码
<input name="items[1][debit]" type="number">
<input name="items[341][debit]" type="number">
<input name="items[31][debit]" type="number">
<input name="items[431][debit]" type="number">
答案 0 :(得分:0)
首先,为您的输入分配一个类,例如:
<input class="js-inc" name="items[1][debit]" type="number">
<input class="js-inc" name="items[341][debit]" type="number">
<input class="js-inc" name="items[31][debit]" type="number">
<input class="js-inc" name="items[431][debit]" type="number">
现在你可以增加所有这些,甚至没有jquery。使用.value
以字符串形式访问该值。使用Number("..")
将其转换为数字。添加一个,并将其分配回来。
var inputs = document.querySelectorAll("input.js-inc")
inputs.forEach(function(input) {
input.value = Number(input.value) + 1
})
这里是live example
答案 1 :(得分:0)
如果您希望将所有输入值与name="items[X][Y]"
相加,可以通过测试其name
属性是否与此/items\[\d+\]\[debit\]/
Regex <匹配来过滤它们/强>
这应该是你的代码:
var sum = 0;
$('input[type="button"]').click(function() {
$('input').each(function() {
if ($(this).attr('name') && $(this).attr('name').match(/items\[\d+\]\[debit\]/)) {
sum += $(this).val() ? parseInt($(this).val()) : 0;
}
});
console.log(sum);
});
<强>演示:强>
var sum = 0;
$('input[type="button"]').click(function() {
$('input').each(function() {
if ($(this).attr('name') && $(this).attr('name').match(/items\[\d+\]\[debit\]/)) {
sum += $(this).val() ? parseInt($(this).val()) : 0;
}
});
console.log(sum);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="items[1][debit]" type="number" value="2">
<input name="items[341][debit]" type="number" value="2">
<input name="items[31][debit]" type="number" value="2">
<input name="items[431][debit]" type="number" value="2">
<input type="button" value="SUM" />
&#13;