-1

我有几个具有相同字段的表单,我需要使用 jQuery 收集一个 set o 字段的值。我正在使用.each它,它适用于该字段,id="q"但我不知道为什么,对于其他字段,它只获得第一个值。有人可以帮助我吗?

HTML:

<form name="art_1" id="art_1">
<input type="text" name="prezzol" id="prezzol">
<input type="text" name="q" id="q" onchange="ricalcola('#art_1')">
<input type="text" name="sconto" id="sconto" onchange="ricalcola('#art_1')">
</form>
<form id="art_2" name="art_2">
<input type="text" id="prezzol" name="prezzol">
<input type="text" name="q" id="q" onchange="ricalcola('#art_2')" >
<input type="text" name="sconto" id="sconto" onchange="ricalcola('#art_2')" >
</form>
<a onclick="totale()">totale</a>

JavaScript:

function totale() {
    $('#q').each(function (){
    //works!! 2 value!
    tquantità += parseInt($(this).val())
}) 
$('#sconto').each(function(){
    //doesn't work, only the first value
    tprezzo += $(this).val()
})
4

3 回答 3

0

如果要选择具有 name 属性的所有元素,可以使用以下代码:

function totale() {
    $('input[name=sconto]').each(function (){
      tquantità += parseInt($(this).val(),10);
    }) 
    $('input[name=q]').each(function(){
       tprezzo += parseInt($(this).val(),10);
    })
})
于 2012-11-19T13:49:13.190 回答
0

ID 应该是唯一的,所以这就是为什么你只会得到一个值。

尝试使用您的输入名称作为选择器。即:$('input[name=q]')

于 2012-11-19T13:45:59.377 回答
0

您不能id在同一个文档上有多个 s .. 将您的 HTML 更改为使用类,然后迭代元素

<form name="art_1" id="art_1">
<input type="text" name="prezzol" class="prezzol">
<input type="text" name="q" class="q" onchange="ricalcola('#art_1')">
<input type="text" name="sconto" class="sconto" onchange="ricalcola('#art_1')">
</form>
<form id="art_2" name="art_2">
<input type="text" class="prezzol" name="prezzol">
<input type="text" name="q" class="q" onchange="ricalcola('#art_2')" >
<input type="text" name="sconto" class="sconto" onchange="ricalcola('#art_2')" >
</form>
<a onclick="totale()">totale</a>

然后做

function totale() {
    $('.q').each(function (){
      tquantità += parseInt($(this).val(),10);
    }) 
    $('.sconto').each(function(){
       tprezzo += parseInt($(this).val(),10);
    })
})

并且parseInt()应该始终包括基数

于 2012-11-19T13:46:11.123 回答