2017-05-29 22 views
1

我有非常簡單明確的問題。我已經動態創建輸入字段:如何獲取所有輸入字段的總和()id從同一個字符串開始

id=pend_1, id=pend_2 .....id=pend_14 

我需要得到總和(所有這些ID從pend_ *開始輸入字段)?

更加清晰,請看圖:

enter image description here

有沒有把所有的輸入字段的總和()的任何最簡單的方法?

在這種情況下,用戶會把值在文本字段和jQuery將計算的onblur()事件的總和()...

+0

使用'$('[ID^=」文本」]「)'選擇所有以相同的文本開始ID – guradio

+1

你可以有相同的'.class'對於這樣的輸入,然後使用'$ .each'來迭代和求和他們每個人 –

+0

@SandeepNayak我欣賞你的想法...我想測試這個。 –

回答

2

更好添加單個類所有這些領域,如

<輸入類型= 「文本」 級= 「sum_item」 ID = 「pend_1」/>

< INPUT TYPE = 「文本」 類= 「sum_item」 ID = 「pend_2」/>

而使用以下代碼來總結起來

var sum=0; 
$('.sum_item').each(function(){ 
var item_val=parseFloat($(this).val()); 
if(isNaN(item_val)){ 
    item_val=0; 
} 
sum+=item_val; 
$('#total').val(sum.toFixed(2)); 
}); 
+0

你的解決方案是少量資源飢餓,但它是我的問題的一個夢幻般的解決方案。 –

1

​$("[id^=AAA_][id$=_BBB]") 這將返回所有的元素,所有指定的屬性相匹配過濾器:

  • [id^=AAA_] matches elements with id attribute starting with AAA_,
  • [id$=_BBB] matches elements with id attribute ending with _BBB.

希望這可以幫助。

+0

讓我檢查一下我的問題。我希望它工作 –

1

是的,你可以用下面的代碼得到它,

let sum = $("input[id^='pend_'][type='text']").get() 
       .reduce((res, elm) => (res + (+elm.value)), 0); 

使用元素的starts with selector然後get()數組表示,然後reduce它的總和。

+1

這是非常簡單的解決方案,如果工作,讓我在第一個之後嘗試。 –

2

假設有Div的與id="test_1", id="test_2"數量等......,您可以使用下面的方法

var count = ($("div[id^='test']").length 

連續服用總和你寫匿名函數,它接受的結果得到的計數和元素作爲參數作爲@Rajaprabhu Aravindasamy提到的解決方案是正確的,

但一個小的變化,如果輸入型已NaN的值,然後將其轉換爲0這裏是稍加修改的代碼,你可以在此使用||運營商如果該值爲例如NaN,則默認返回0。let a = $('#a').val() || 0;

var sum = $("input[id^='test'][type='text']") 
       .get() 
       .reduce((res, elm) => 
         (res + (+elm.value || 0)), 0); 

希望這有助於

+1

@RajaPrabhu AravindaSamy,只是一個小建議,加||值爲0的運算符在加起來時將返回0,因爲這會給出整數值的結果而不是返回NaN。 –

+1

好點。但我認爲,向提問者提出一個基本的想法會讓他自己寫出他的全部要求。 –

+1

@Rajaprabhu Aravindasamy我剛剛檢查了一個字符串只有一個輸入類型,整個返回null,所以我試着用這個解決方案。 –

1

$('input[id^="pend_"][type="text"]').on('input',function(){ 
 
var sum = 0; 
 
$('input[id^="pend_"][type="text"]').each(function(){ 
 
var valu = $(this).val() == '' ? 0 : $(this).val(); 
 
if(!isNaN(valu)) 
 
{ 
 
sum = sum + parseFloat(valu); 
 
} 
 
}); 
 

 
$('label').text(sum); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="pend_1" ><br/> 
 
<input type="text" id="pend_2" ><br/> 
 
<input type="text" id="pend_3" ><br/> 
 
<input type="text" id="pend_4" ><br/> 
 
<input type="text" id="pend_5" ><br/> 
 
Result:<label id="result" value="label"> </label>

相關問題