在Asp.Net网页上禁用textareas外部的返回键(包含ajax代码)

时间:2009-11-24 13:32:42

标签: asp.net ajax events routed-events

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

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

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

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

任何提示都会非常感激!

Achim的

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

你可以通过使用如下面板来实现它。

 <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

答案 2 :(得分:0)

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

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