2012-11-19 146 views
-1

我有几个表单与同一个字段,我需要用jQuery收集set字段的值。我使用的是.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() 
}) 
+1

为什么你使用.each来选择一个带ID的元素??? –

+0

使用class ID insted ID .... ID应该始终是唯一的,这就是为什么它被称为“ID”...... – bipen

回答

0

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

尝试使用输入的名称作为选择器。即: $(“输入[名称= Q]”)

0

你不能对同一文件的多个id秒。改变你的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()应该包括基数

0

,如果你要选择与名ATTRIB所有元素你可以使用这段代码:

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