Javascript 更改keydown事件上的值将刷新页面

Javascript 更改keydown事件上的值将刷新页面,javascript,jquery,Javascript,Jquery,我正在用jQuery做一个计算器。问题是,在keydown上,我调用了计算并返回值的calculate函数。但是,如果我更改文本框中的值,然后再次按下向下键,页面将刷新,所有内容均为空白 如果用户更改文本框中的值,我不希望页面刷新。它应该再次调用calculate函数,返回并显示新结果 代码如下: lgpm.keydown(function(event){ var keycode = (event.keyCode ? event.keyCode : event.whic

我正在用jQuery做一个计算器。问题是,在keydown上,我调用了计算并返回值的calculate函数。但是,如果我更改文本框中的值,然后再次按下向下键,页面将刷新,所有内容均为空白

如果用户更改文本框中的值,我不希望页面刷新。它应该再次调用calculate函数,返回并显示新结果

代码如下:

lgpm.keydown(function(event){

            var keycode = (event.keyCode ? event.keyCode : event.which);
            if(keycode == '13'){
                if (formValidate()){
                    event.preventDefault();
                    return false;
                }
                else {
                calculateMet();
                }
            }
            event.stopPropagation();
        });

每当按下enter键时,都需要调用
event.preventDefault()
方法-否则它将提交表单-试试这个

lgpm.keydown(function(event){

        var keycode = (event.keyCode ? event.keyCode : event.which);
        if(keycode == '13'){
            event.preventDefault();
            if (formValidate()){
                return false;
            }
            else {
            calculateMet();
            }
        }
        event.stopPropagation();
    });

尝试在event.preventDefault()之后添加event.stopPropagation()

将您的正文更改为:

if(keycode == '13'){                                                                                              
   if (formValidate()){                                                                                          
      event.preventDefault();                                                                                   
   } else {                                                                                                      
      calculateGravelMetric();                                                                                   
   }                                                                                                             
}                                                                                                                 
return false;

。。。因此,默认处理将始终被阻止

HTML外观如何(包括
标记)?此代码不起作用。它不会刷新页面,但在第二次按键时也不会调用calculate函数。好吧,我刚刚意识到它可以工作。但它只接受被按下/按下的文本框的新值[这是用户输入的表单的最后一个文本框]。如果我更改其他文本框的值,然后在最后一个文本框上按向下键,则不会调用计算函数,即,我假设没有检索到文本框的新值。您是否可以在JSFiddle.net上发布完整代码?这将使调试变得更容易。。。为什么在那里有stopPropagation方法?以下是JSFIDLE上的代码:我不确定为什么javascript在那里不工作。@fuz3d您在那里有很多错误。。。我已经更新了。。。。