【问题标题】:Disable Return key outside textareas on a Asp.Net web page (containing ajax code)在 Asp.Net 网页上禁用文本区域外的返回键(包含 ajax 代码)
【发布时间】:2009-11-24 13:32:42
【问题描述】:

我有一个 Asp.Net 网页,具有通用的 Asp.Net 表单。页面的外部“边框”(即主菜单、标题等)是使用普通 Asp.Net 代码使用母版页构建的。该页面的内容使用 jQuery 来显示动态表单并将数据发送到服务器。

如果我在该页面上按下返回键,我会跳转到一个(或多或少)随机页面——这不是用户所期望的。 ;-)

有一些文本区域,用户必须能够输入换行符。否则完全禁用返回键就可以了。有什么防弹方法吗?

我在网上找到了一些解决方案,它们捕获按键事件并忽略 \x13,但这并不起作用。只要页面刚刚加载,它就可以工作,但是一旦我点击了一些元素,返回键的行为就像往常一样。

任何提示将不胜感激!

阿奇姆

【问题讨论】:

    标签: asp.net ajax events routed-events


    【解决方案1】:

    这是我昨天晚上整理的一些脚本,但由于我的笔记本电脑没电了,所以无法发布:(

    注意:我使用的是jQuery。但是您可以轻松地重新编写它以使用纯 javascript。

    <html>
    <head>
    <title>Enter Key</title>
    <script src="jquery-1.2.6.js"></script>
    </head>
    <body>
    <div id="prompt" style="color:#eeffee;width:50px;height:50px;"></div>
    <textarea id="txt" cols="25" rows="10"></textarea>
    <script type="text/javascript">
    $(document).ready(function(){
        var ar=$("textarea").add($("input"));
        var elems=new Array();
        var key = 13;
    
        $(ar).each(function(){
            var i=$(this).attr("id");
            if(i && i!=="")
                elems.push(i);
        });
        elems.sort();
    
        $().keypress(function(e){
            var k=e.keycode || e.which;
            var id = e.target.id;
            if(k === key){
                if(id){
                    var ar=$.grep(elems,function(a){ return a==id;});
                    if(ar.length === 0){
                        $("#prompt").html("Eating ");
                       return false;
                    }else{
                        $("#prompt").html("Allowed");
                    }               
                }else{
                    $("#prompt").html("Eating ");
                    return false;
                }           
            }
        });
    });
    </script>
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      您可以使用下面的面板来实现它。

       <asp:Panel runat="server" DefaultButton="">
      other html/asp tags
          </asp:Panel>
      

      应该有其他有效的方法。

      http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

      【讨论】:

        【解决方案3】:

        这是我用来解决此问题的方法。

        <form runat="server" defaultbutton="DoNothing">
                <asp:Button ID="DoNothing" runat="server" Enabled="false" style="display: none;" />
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-25
          • 1970-01-01
          • 2012-07-28
          • 2011-09-04
          • 2021-11-17
          • 1970-01-01
          • 2015-03-01
          • 2014-01-04
          相关资源
          最近更新 更多