Javascript 键控功能不适用于表单输入

Javascript 键控功能不适用于表单输入,javascript,jquery,html,Javascript,Jquery,Html,希望有人能解释我的问题。我有三个输入字段,当所有三个字段都被填充时,它们会计算公式。我使用keyup函数来检测字段何时有内容,但就我而言,我无法让它工作。任何帮助都将不胜感激 $(.input sm”)。每个(函数(){ $(this).keyup(function(){ calculateStuff(); }); }); 函数calculateStuff(){ //仅当值为number时添加 如果(!isNaN($('#pa').val())和($('#pa').val().length!=

希望有人能解释我的问题。我有三个输入字段,当所有三个字段都被填充时,它们会计算公式。我使用keyup函数来检测字段何时有内容,但就我而言,我无法让它工作。任何帮助都将不胜感激

$(.input sm”)。每个(函数(){
$(this).keyup(function(){
calculateStuff();
});
});
函数calculateStuff(){
//仅当值为number时添加
如果(!isNaN($('#pa').val())和($('#pa').val().length!=0){
pa=parseFloat(此.value);
}
如果(!isNaN($('#de').val())和($('#de').val().length!=0){
de=parseFloat(这个.value);
}
如果(!isNaN($('#pr').val())和($('#pr').val().length!=0){
pr=parseFloat(这个.value);
}
re=pa+de+pr;
stuff=((pr-de)/(re))*100;
$(“#value”).html(stuff);
}

Stuff=0

1st:您可以使用.keyup而无需。每个

$(".input-sm").on('keyup',function() {
   calculateStuff($(this));
});
2nd:在转到if语句之前,尝试用0定义变量

3rd:
此.value
将不返回任何内容,因此将el传递给函数
$(el).val()
并在keyup中使用它

function calculateStuff(el) {
     var pa = 0, de = 0, pr = 0 , re = 0, stuff = 0;
     //add only if the value is number
     if (!isNaN($('#pa').val()) && $('#pa').val().length != 0) {
        pa = parseFloat($(el).val());
     }
     if (!isNaN($('#de').val()) && $('#de').val().length != 0) {
        de = parseFloat($(el).val());
     }
     if (!isNaN($('#pr').val()) && $('#pr').val().length != 0) {
         pr = parseFloat($(el).val());
     }

  re = pa + de + pr;
  stuff = ((pr - de) / (re)) * 100;
  $("#value").html(stuff);
}

我试过你的密码。您正在控制语句中使用(this.value),而“this”未定义,实际上您并没有从它的来源引用它。将(this.value)替换为输入元素的相应id,如下=>($('#pa').val()


我对它进行了测试,效果很好。

您是否将代码放在页面底部,并保存在$(文档)中。准备好了(function(){})?令人上瘾的是,我还将此更改:$(this).keyup(function()改为$(this).on('keyup',function()。请将函数放在文档之外:)
     //e.g.
     pa = parseFloat($('#pa').val());