.Net 为具有“DefaultButton”属性集的表单生成的代码包含较差的 JavaScript,该功能允许该功能在 IE 中运行,但不能在其他浏览器(特别是 Firefox)中运行。
按 Enter 键确实会在所有浏览器中提交表单,但当按键发生在 <textarea> 控件内时,Firefox 无法忽略该按键。结果是多行文本区域控件在 Firefox 中不能是多行,因为 Enter 键提交表单而不是创建新行。
有关该错误的更多信息,read it here .
这可以在 Asp.Net 3.0+ 中修复,但仍需要为 2.0 创建解决方法。
有什么最简单的解决方法的想法(看起来不像黑客的黑客 =D)?上面链接中的解决方案让我有点害怕,因为它很容易产生意想不到的副作用。
最佳答案
我使用这个改编自codesta的函数。 [编辑:同一个,我明白了,这让你害怕!哎呀。那我就帮不了你了。]
http://blog.codesta.com/codesta_weblog/2007/12/net-gotchas---p.html .
您可以通过像这样用 div 包围您的代码来使用它。您可以对表单进行子类化以自动包含此内容。我不太用它,所以我没有。
<div onkeypress="return FireDefaultButton(event, '<%= aspButtonID.ClientID %>')"> (your form goes here) </div>
这是函数。
function FireDefaultButton(event, target) { // srcElement is for IE var element = event.target || event.srcElement; if (13 == event.keyCode && !(element && "textarea" == element.tagName.toLowerCase())) { var defaultButton; defaultButton = document.getElementById(target); if (defaultButton && "undefined" != typeof defaultButton.click) { defaultButton.click(); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } } return true; }
关于Firefox 中的 Asp.Net 表单 DefaultButton 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033/