Firefox 中的 Asp.Net 表单 DefaultButton 错误

标签 asp.net firefox webforms textarea

.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/

相关文章:

c# - asp.net中web应用程序需要的调度作业思路

asp.net - 用户“IIS APPPOOL\myAppPool”登录失败

c# - 无法在 asp.net c# 中使用 ajax jquery 获取数据表单函数

javascript - new Date().toLocaleString 在 Firefox 上不起作用

ruby-on-rails - Selenium Webdriver 无法找到 Mozilla geckodriver

c# - ASP.Net Web 应用程序 dll 加载问题

asp.net - UserManager.FindAsync(用户名,密码)在ASP.NET 5/Identity 3中不可用

javascript - 在 Firefox 中显示从父窗口添加到子窗口的内容时出现问题

html - 按钮不存在时呈现输入组

c# - ASP.NET 在 If 语句的 .aspx 中使用 Bind/Eval