关于()的Jquery问题

关于()的Jquery问题,jquery,Jquery,我创建了一个小提琴来添加两个值并输出值。小提琴在这里: 当我为输入框(G7)输入值时,该值将添加到G8并显示输出。但当我使用backspace删除输入框中的值时,G8中的值不会更改为默认值(0)。我尝试了.on()和.bind()。但是没有运气。请帮我找出问题所在 我正在使用以下事件: $("#g7").on("input keyup keydown keypress change blur", function() {}); 谢谢。编辑:忽略答案。我不知道输入是否确实有效 查看,输入不是

我创建了一个小提琴来添加两个值并输出值。小提琴在这里:

当我为输入框(G7)输入值时,该值将添加到G8并显示输出。但当我使用backspace删除输入框中的值时,G8中的值不会更改为默认值(0)。我尝试了
.on()
.bind()
。但是没有运气。请帮我找出问题所在

我正在使用以下事件:

 $("#g7").on("input keyup keydown keypress change blur", function() {});
谢谢。

编辑:忽略答案。我不知道
输入是否确实有效


查看,
输入
不是有效的事件类型。可能是看到无法识别的类型导致它删除了其余的字符?

当您删除输入字段中的所有字符时,该值将变为空字符串

var sum=parseFloat(noCommasg6)+parseFloat(g7)

此行上的分析浮点值将计算为NaN

if (!isNaN(sum))
               {
                    $("#g8").text(sum);
                    $('#g8').number( true, 2 );
               }
然后,仅当g8为NaN时,才检查并更新它

如果g7为空,则需要包含一个大小写,然后只需将默认值设置为零

#g7
为空时,parseFloat返回一个空字符串,因此对其执行加法操作将导致
NaN
。此外,您不需要所有这些事件,事实上,拥有所有这些事件意味着您的函数在每次按键时都会触发多次。
keyup
事件应该足够了,除非输入字段正在外部更新,在这种情况下,您也可以使用
change
事件。不过,如果您正在进行外部更新,我更倾向于通过执行类似
$(“#g7”).trigger('keyup')
手动触发事件

请为jQuery尝试以下代码,它似乎可以正常工作:

$(document).ready(function() {
    $("#g7").on("keyup", function() {
        var g6 =$('#g6').text();
        var g7 =$('#g7').val() || 0;
        var g8 =$('#g8').text();

        var noCommasg6 = $('#g6').text().replace(/,/g, ''),
        asANumber = +noCommasg6;

        var sum=parseFloat(noCommasg6)+parseFloat(g7);
        if (!isNaN(sum))
        {
            $("#g8").text(sum);
            $('#g8').number( true, 2 );
        }
    });
});
还有一些需要注意的事项:

  • $('#g8')。数字(真,2)错误与消息
    $(…)。数字不是函数
  • 您可能希望通过将HTML
    输入类型=“…”
    更改为
    数字(而不是
    文本
    ),来限制可以进入
    #g7
    的值,以便字母字符不会进入

将代码添加到OP而不仅仅是一个外部链接。对于演示使用
而言,问题不在于
。on()
,问题在于事件处理程序中的代码。
input
与jQuery一起工作(只要浏览器支持它,所有现代浏览器都支持),但是jQuery没有快捷方式
。input()
方法为其绑定处理程序。使用
.on(“输入”)
是可以的。我不知道这是一个有效的事件类型。谢谢。谢谢,编辑了我的答案。parseFloat将返回空字符串和空字符串的NaN。谢谢您的回答:)不用担心。我想我没有注意到我所做的,在第4行使用了一个空合并操作符,这意味着如果
$('#g7').val()
为空/null/0/etc,那么它默认值为0。这是一种创建默认值的快速而简单的方法,有更健壮的方法,但这应该足以满足您所做的工作。