在 Asp.Net 网页上的文本区域之外禁用 Return 键(包含 ajax 代码)

发布于 2024-08-12 20:58:49 字数 357 浏览 3 评论 0原文

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

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

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

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

任何提示将非常感激!

阿希姆

I have an Asp.Net web page, having the common Asp.Net form. The outer "border" of the page (i.e. main menu, header, ...) is build using normal Asp.Net code using a master page. The content of that page uses jQuery to display dynamic forms and to send data to the server.

If I push the return key on that page, I jump to a (more or less) random page - which is not what the user expects. ;-)

There are some text areas and the user must be able to enter line breaks. Otherwise it would be fine to disable the return key completely. Any bullet proof way to do that?

I found some solutions on the web, which capture the keypress event and ignore \x13, but that does not really work. It works as long as the page has just loaded, but as soon as I have clicked on some elements, the return key behaves as usuall.

Any hint would be really appreciated!

Achim

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

演多会厌 2024-08-19 20:58:49

这是我昨天晚上编写的一些脚本,但由于我的笔记本电脑电池没电而无法发布它:(

注意:我正在使用 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>

Here is some script I put together yesterday night but was not able to post it as my laptop ran out of battery :(

NOTE: I'm using jQuery for it. But you can easily re-write it to work with pure 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>
破晓 2024-08-19 20:58:49

您可以通过使用面板来实现它,如下所示。

 <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

You could achieve it by using Panel like below.

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

There should be other efficient ways.

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

梦里的微风 2024-08-19 20:58:49

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

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

Here is what I used to fix this problem.

<form runat="server" defaultbutton="DoNothing">
        <asp:Button ID="DoNothing" runat="server" Enabled="false" style="display: none;" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文