2012-04-27 66 views
3

我有一个内置的ASP.NET表单。第一个控件允许用户从自动完成列表中选择一个人。当用户按下输入时,它会刷新页面并复制通过第一个控件获取的任何信息。我试图从刷新页面中删除输入键的功能。此代码在Chrome和IE7/8/9(不关心6)中都可以使用。我需要的只是返回false,它可以在我们除Firefox以外的所有浏览器中工作。 .click()是将可用性添加回密钥(以便激活控件并检查或取消选中复选框等)的附加功能。如何防止输入按钮在Firefox 12中运行其默认行为?

这些都不适用于Firefox 12。发生(证明代码是在我想要的时候达到的),但是页面每次刷新一次。

focusNextInputfield()是类似问题的建议之一,并没有做任何我想要的。它可能已经完成了它的目标,但我无法分辨,因为页面已经刷新。

我发现preventDefault()和stopPropagation()来自另一个类似的问题,并且它在FF中没有做任何事情。

我甚至已经尝试返回真正的它。

$(document).keydown(function (event) { 
    //handles what happens when the user hits enter 
     if (document.activeElement.nodeName !== 'TEXTAREA') { 
      if (event.keyCode === 13 || event.which === 13) { 
       $(document.activeElement).click(); 
       // $(document.activeElement).focusNextInputField(); 
       event.preventDefault(); 
       event.stopPropagation(); 
       return false; 
      } 
     } 
    }); 

我只是寻找任何建议或新闻在任何原因这对FireFox 12没有任何影响?而且我知道代码已经达到,并且所有代码都可以正常运行而不会出错,即使所有代码仍然可以在Chrome和IE 7/8/9中正常运行,正如我所说的。

而且通过之前的迭代,我尝试强制单击提交按钮,但仍旧刷新并验证,并且总体上是不好的用户体验。

回答

2

看起来你正在使用jQuery,所以你需要的只是在表单提交事件中防止默认。

$j("#form-id").submit(function(e) { 
    e.preventDefault(); 
    ... 
}); 

或者:

$j("#form-id").submit(false); 
+0

不会这绝不允许你提交?即使点击? – 2012-04-27 16:33:38

+0

是的。你需要添加一个观察者来点击按钮的事件,然后做你想做的事情。 – 2012-04-27 16:35:42

+0

我不太知道为什么,但我确实 '$(文件).submit(函数(E) {e.preventDefault() });' 而且我也没有做什么特别的保持表格按预期运行并解决问题。谢谢你的帮助。 – Reafexus 2012-04-28 14:58:47