Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript文本框值输出NAN on.Change_Javascript_Jquery - Fatal编程技术网

Javascript文本框值输出NAN on.Change

Javascript文本框值输出NAN on.Change,javascript,jquery,Javascript,Jquery,我对javascript真的很陌生,并尝试过谷歌搜索。但是我没有发现任何运气。 所以请帮助我,每次我在文本框中输入一个值。另一个文本框将显示nan,然后当我尝试更改nan值时,我输入的第一个文本框将返回值的前千位 这是我的问题所在 这是我的密码 $(document).on('change', '#family_home,#home_contents,#motor_vehicle,#Total', function() { updateTotal(); }); var up

我对javascript真的很陌生,并尝试过谷歌搜索。但是我没有发现任何运气。 所以请帮助我,每次我在文本框中输入一个值。另一个文本框将显示nan,然后当我尝试更改nan值时,我输入的第一个文本框将返回值的前千位

这是我的问题所在

这是我的密码

$(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);         
};  
请帮忙。谢谢我知道我是个新手,但我想从你们那里获得更多的知识。所以请把它传给我。Thank

属性是一个表示非数字的值。要在代码中避免这种行为,可以使用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);         
};  
请使用此代码:

$(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);         
};  

重复-,哇,谢谢,这完全有效。但是,当我点击下一个文本框时,如何设置每个文本框以自动输出逗号?我尝试了。在“keyup”上,但它会将整数返回到前千个。对于输出逗号,您必须使用当前逻辑进行字符串替换。但是要小心,在读取值并将其传递给parseInt时,请确保再次使用空字符串替换逗号,以便parseInt正确解析输入。此外,在使用parseInt时,始终包括第二个参数,即parseIntmytext,10;第二个参数10确保您希望解析的值是十进制10。其他可能是2位二进制,16位十六进制,8位八进制。嗨,我已经更新了上面的代码来反映你想要的。由于某些错误,无法保存小提琴。为什么我的答案为-1?请说明原因。这真是太棒了,谢谢你的帮助。我希望我能投票赞成你的答案。这真的帮助了我。非常感谢