2011-11-01 19 views
0

我正在使用jQuery制作计算器。问题是,在keydown上,我调用计算函数来计算并返回值。但是,如果我更改文本框中的值并再次按下按键,页面将刷新,并且所有内容都为空。更改keydown事件刷新页面的值

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

这是代码:

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

您的HTML看起来如何(包括'标签)? –

回答

1

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

此代码无效。它不会刷新页面,但它不会在第二次在keydown上调用计算函数。 – input

+0

好吧,我只是意识到它的工作原理。但它只需要被按下/按下[这是用户输入窗体的最后一个文本框]的文本框的新值。如果我更改其他文本框的值,然后在最后一个文本框上按下keydown,则不会调用calculate函数,即我假定文本框的新值未被检索。 – input

+0

你可以在JSFiddle.net上发布完整的代码吗?它会使调试更容易...为什么你在那里有stopPropagation方法? – ManseUK

0

尝试添加事件。 stopPropagation()后event.preventDefault()

0

你的身体更改为:

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

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