2012-03-02 13 views
1

クリックすると入力テキストの値を1ずつ増やそうとしています。それは本当に簡単な作業ですが、私はそれを働かせることができません。コードは次のとおりです。連結の代わりに合計

<script type="text/javascript"> 
$('#field').bind('click', function(){ 
    old_value = $(this).attr('value'); 
    $(this).attr('value', (old_value+1)); 
}) 
</script> 
<form action=""> 
    <input type="text" value="1" id="field"/> 
</form> 

入力をクリックすると、その値は増分されません。その代わりに、数字の末尾に数字1が追加されます。つまり、3回のクリック後に入力値は1111です。私は間違って何をしているアイデアはありますか?前もって感謝します。

答えて

6

あなたはすべてのフォームの値を文字列として周りに渡される型キャストする必要があります。あなたが忘れてしまった場合

$('#field').bind('click', function(){ 
    old_value = parseInt($(this).attr('value'), 10); 
    $(this).attr('value', (old_value+1)); 
}) 

Whatever you do don't forget to pass a radix (base) through to the parseInt function!

、これは起こるかもしれません:

parseInt("010") # 8 
+0

+1基数パラメータの重要性を強調して説明する –

0

あなたは数に文字列を解析する必要があります。

parseInt($(this).val(), 10) 
2

単項+オペレータが便利数

$(this).attr('value', (+old_value + 1)); 

に文字列を回すことができるか、使用することができますparseInt他の回答と同様です。

関連する問題