2014-01-30 68 views
-2

我真的很新的JavaScript和嘗試谷歌搜索。但我沒有找到任何運氣。 所以請幫助我,每次我輸入一個值到一個文本框。另一個文本框將顯示「nan」,然後當我嘗試更改NaN值時,我輸入的第一個文本框將返回該值的前一千位數。JavaScript文本框值輸出南on.Change

這裏是我的proble

Fiddle,這些都是我的代碼

$(document).on('change', '#family_home,#home_contents,#motor_vehicle,#Total', function() { 
updateTotal(); 
    });  
var updateTotal =function() { 
var a = parseInt($('#family_home').val()); 
$('#family_home').val(a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var b = parseInt($('#home_contents').val()); 
$('#home_contents').val(b.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var c = parseInt($('#motor_vehicle').val()); 
$('#motor_vehicle').val(c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var total = parseInt(a)+parseInt(b)+parseInt(c); 
$("#Total").html(total);   
}; 

請請幫助。謝謝。我知道我是一個新手,但我想從你們那裏獲得更多的知識。所以請把它傳遞給我。謝謝

+0

重複-http://計算器.com/questions/7295843/allow-only-numbers-to-be-type-in​​-a-textbox,http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9 -in-HTML的輸入框,全光照g-jquery, –

回答

-1

請使用此代碼:

$(document).on('change', '#family_home,#home_contents,#motor_vehicle,#Total', function() { 
    updateTotal(); 
    });  
    var updateTotal =function() { 
    var re=new RegExp(",","g"); 
    var a = parseInt($('#family_home').val().replace(re,""),10); 
    if(!isNaN(a)) 
    $('#family_home').val(a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
    var b = parseInt($('#home_contents').val().replace(re,""),10); 
    if (!isNaN(b)) 
    $('#home_contents').val(b.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
    var c = parseInt($('#motor_vehicle').val().replace(re,""),10); 
    if (!isNaN(c)) 
    $('#motor_vehicle').val(c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
    var total = parseInt(a)+parseInt(b)+parseInt(c); 
    $("#Total").html(total);   
}; 
+0

謝謝,這完全有效。但我怎麼能設置每個文本框自動輸出逗號的時候,我點擊下一個texbox?我嘗試過.on('keyup'),但它將整個數字返回到前幾千。 – user3192596

+0

對於輸出逗號,您將使用當前的字符串替換邏輯。但要小心,在讀取值並將它們傳遞給parseInt時,請確保再次用空字符串替換逗號,即「」,以便parseInt正確解析輸入。 另外,雖然使用parseInt總是包含第二個參數,即 parseInt(mytext,10);第二個參數10確保您希望解析的值在十進制(10)系統中。其他可能性是2(二進制),16(十六進制),8(八進制)。 – kcak11

+0

你可以編輯我的小提琴http://jsfiddle.net/hescano/zzxwV/6/ 請 – user3192596

0

NaN屬性是一個值,表示「非數字」。爲避免你的代碼這種行爲,您可以使用isNaN()功能:

$(document).on('change', '#family_home,#home_contents,#motor_vehicle,#Total', function() { 
    updateTotal(); 
    });  
var updateTotal =function() { 
var a = parseInt($('#family_home').val()); 
    $('#family_home').val(a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var b = parseInt($('#home_contents').val()); 
    if (!isNaN(b)) 
    $('#home_contents').val(b.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var c = parseInt($('#motor_vehicle').val()); 
    if (!isNaN(c)) 
    $('#motor_vehicle').val(c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 
var total = parseInt(a)+parseInt(b)+parseInt(c); 
    $("#Total").html(total);   
}; 

http://jsfiddle.net/hescano/zzxwV/6/

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN