2010-01-28 110 views
4

我需要輸入中所有值的總和。結果必須顯示在輸入字段總數readonly中。使用jQuery獲取所有輸入值的總和

用戶可以輸入1個或多個值。問題是我的var值不正確。我還想知道如何通過onchange立即返回價值?

$(document).ready(function() { 
    $("div#example input").change(function() { 
    var value = '';  
    $("div#example input[name!=total]").each(function() { 
     value += $(this).val();  
    }); 
    console.log("value after each: " + value); 
    }); 
}) 

HTML:

<div id="example"> 
    <input type="text" size="5" id="value1" name="value1" /> 
    <input type="text" size="5" id="value2" name="value2" /> 
    <input type="text" size="5" id="value3" name="value3" /> 
    <input type="text" size="5" id="value4" name="value4" /> 
    <input type="text" size="5" id="value5" name="value5" /> 
    <input type="text" size="5" id="total" readonly="readonly" class="bckground" name="total" /> 

回答

2

使用+ = parseInt函數($(本).VAL());

+0

+1 parseInt函數 – 2010-01-28 19:24:50

+1

或parseFloat/...雙人牀,因爲你需要... – roman 2010-01-28 19:25:22

+0

以及我如何返回值? – lander 2010-01-28 19:26:42

1
var sum = 0; 
$('input[id^=value]').each (function(){ sum+=$(this).val(); }); 
$('#total').val(sum); 

:]

+0

誰upvoted這???它慘淡地失敗。 – 2010-01-28 19:33:10

+0

嗯,這是一般的想法,沒有完全消毒的輸入... – 2010-01-28 20:18:04

+0

沒有將val()的結果轉換爲數字值,這將執行不是所需的字符串連接。 – 2010-01-28 22:45:27

4

嘗試是這樣的:

$(document).ready(function() { 
    $("div#example id^='value'").change(function() { 
     var value = 0; 

     $("div#example input[name!=total]").each(function() { 
      var i = parseInt($(this).val()); 

      if (!isNaN(i)) 
      { 
       value += i; 
      } 
     }); 

     $('#total').val(value); 
    }); 
}) 
+0

鮑比我試圖遵循這一點,你可以請添加一些上下文來執行?每次輸入字段更新時都會運行嗎(無需提交)? – 2014-03-11 23:51:56

+0

@square_eyes:是的,傳遞給change()的函數會在任何輸入發生變化時執行,但請記住,javascript會將「更改」解釋爲「文字輸入的新值失去焦點」 - 即鍵入數字,則移出輸入字段,更改事件觸發。像Bobby說的 – 2014-03-12 22:52:27

0

我認爲這可能是更接近:

<script type="text/javascript"> 

$(document).ready(function() { 

    $("#example value").change(function() { 
    var total = 0;  
    $("#example value").each(function() { 
     total += parseInt($(this).val());  
    }); 
    window.console && console.log("value after each: " + total); 
    }); 
}) 

</script> 

<div id="example"> 
    <input type="text" size="5" class="value" name="value1" /> 
    <input type="text" size="5" class="value" name="value2" /> 
    <input type="text" size="5" class="value" name="value3" /> 
    <input type="text" size="5" class="value" name="value4" /> 
    <input type="text" size="5" class="value" name="value5" /> 
    <input type="text" size="5" id="total" readonly="readonly" class="bckground" name="total" /> 
</div> 

您的$ .change原來選擇()被包括整個盒子,我懷疑你不想要。

我正確猜測你想添加數字嗎?你原來的'值'變量是一個字符串。

順便說一句,使用'window.console & &'console.log'成語更安全,因爲許多用戶不會有控制檯變量。基於其他建議(雖然我敢打賭,該行只在那裏進行調試。)

編輯

新增parseInt函數()。

+0

,我需要isNaN。然後,總和是正確的 – lander 2010-01-28 19:34:59

+0

'嫌疑人' - 但你不知道;-)我想知道如果改變()實際上觸發時,價值改變編程方式,使用val()函數。它不會*出現*給我 – 2010-01-28 19:36:51