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