繁体   English   中英

防止在asp.net输入字段中回车

[英]Prevent postback on Enter in a asp.net inputfield

我的密钥输入在javascript和asp.net中有问题

我有一个这样的控件,带有一个textchanged事件,可以查找,但我想在用户输入时控制它

<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />

这就是我创建这个javascript函数的原因。 因为它避免了在任何字符输入处输入回发

    function EnterEvent(e) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if (keycode == 13) {
            return true;
        }
        else {
            return false
        }
    }

然后我想控制TextBox何时有内容,所以我改变了这样的js。

    function EnterEvent(e, ctrl) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if (keycode == 13) {
            return ctrl.value.length > 2;
        }
        else {
            return false
        }
    }

控制

<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />

但没有任何反应。 任何时候我进入,页面回发。

我还在加载页面后面的代码中添加了这个

            TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);");
            TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);");
            TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);");

我的页面仍然按回车键进行回发。 我的想法是,如果至少有3个字符,则停止输入回发。 任何想法或其他方法?

> -----------------编辑--------------------

我在EnterEvent之前添加了这个函数

    $(function () {
        $(':text').bind('keydown', function (e) { 
            if (e.keyCode == 13) 
                e.preventDefault();
        });
    });

但它会阻止所有页面中的Enter。 输入不起作用。

> ----------------- EDIT 2 --------------------

好吧,我成功了! 正如我在之前的评论中所说的那样,我在过去尝试添加一个虚拟按钮控件,我从文本框转移了事件并调用了它的click事件。 它并不干净但是它有效并且我很着急。 谢谢你们所有人的回答。 如果有人可以提供帮助,我会很感激。 我会继续回顾这个问题。 谢谢。

    function EnterEvent(e, ctrl) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if (keycode == 13 && ctrl.value.length > 2) {
            $('[id$=Button1]').click();
        }
        else {
            return false;
        }
    }

<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" />
<asp:Button ID="Button1" runat="server" OnClick="TextBox1_TextChanged" style="visibility:hidden;width:0;"/>

有类似的需要阻止输入按键(虽然,我不需要考虑输入长度条件,如在这种情况下),并发现这解决了问题...比添加整个脚本块更简单,如果您需要由于有人在文本区域按Enter键,因此停止表单回发。

<asp:TextBox ID="tb_Input" runat="server" onkeypress="return event.keyCode != 13;"></asp:TextBox>

我以为我会分享这个以防其他人只是在搜索这个功能。

尝试:

e.preventDefault();

停止Enter事件。

我建了一个小提琴手:

http://jsfiddle.net/rblaettler/Y3b8F/5/

这是你想要做的吗? 如果您的字符数超过2个,则仅提交。

<asp:TextBox ID="TextBox1" runat="server" onkeydown="return EnterEvent(event,this);" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />

function EnterEvent(e, ctrl) {
            var keycode = (e.keyCode ? e.keyCode : e.which);
            if (keycode == 13 && ctrl.value.length > 2) {
                return false;
            }
            else {
                return true;
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM