在一个asp.net inputfield输入prevent回传 [英] Prevent postback on Enter in a asp.net inputfield

查看:193
本文介绍了在一个asp.net inputfield输入prevent回传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关键的问题输入javascript和asp.net

我有哪些做了找到一个TextChanged事件这样的控制,但我想控制它,当用户确实进入

 < ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件)的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>

这就是为什么我创造了这个javascript函数它工作得很好。因为它避免了在输入回发在任何字符输入

 函数EnterEvent(五){
        VAR键code =(e.key code e.key code:e.which?);
        如果(键code == 13){
            返回true;
        }
        其他{
            返回false
        }
    }

然后我想,当文本框包含内容的控制,所以我改变了JS这样。

 函数EnterEvent(E,CTRL){
        VAR键code =(e.key code e.key code:e.which?);
        如果(键code == 13){
            返回ctrl.value.length> 2;
        }
        其他{
            返回false
        }
    }

控制

 < ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件,这一点)的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>

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

我也是在code添加了这个背后的负载页

  TextBox1.Attributes.Add(安其preSS,EnterEvent(事件,这一点););
            TextBox1.Attributes.Add(的onkeyup,EnterEvent(事件,这一点););
            TextBox1.Attributes.Add(的onkeydown,EnterEvent(事件,这一点););

我的页面做得还是在回车键回发。我们的想法是,停止输入回发如果至少有3个字符。任何想法或另一种方法?

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

我的EnterEvent

之前添加此功能

  $(函数(){
        $(':文本)。绑定('的keydown,功能(E){
            如果(e.key code == 13)
                亦即preventDefault();
        });
    });

但它在阻止所有的页面的输入。输入不能在所有的工作。

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

好吧,我succeded!正如我在previous评论说,我在过去增加了虚拟按键控制试过像我从文本框转移事件,并呼吁其Click事件。 这是不干净的所有,但它的工作原理,我在赶时间。谢谢大家,你们来回答。如果有人可以帮助我仍AP preciate它。我会继续审查这个问题。谢谢你。

 函数EnterEvent(E,CTRL){
        VAR键code =(e.key code e.key code:e.which?);
        如果(键code == 13安培;&安培; ctrl.value.length→2){
            $('[ID $ = Button1的]')点击()。
        }
        其他{
            返回false;
        }
    }< ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件,这一点)/>
< ASP:按钮的ID =Button1的=服务器的OnClick =TextBox1_TextChanged的风格=能见度:隐藏;宽度:0;/>


解决方案

 < ASP:文本框ID =TextBox1的=服务器的onkeydown =返回EnterEvent(事件,这);的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>功能EnterEvent(E,CTRL){
            VAR键code =(e.key code e.key code:e.which?);
            如果(键code == 13安培;&安培; ctrl.value.length→2){
                返回false;
            }
            其他{
                返回true;
            }
        }

I have a problem with the key Enter in javascript and asp.net

I have a control like this with a textchanged event which does a find but I want to control it when the user does enter

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

That's why I created this javascript function which works very well. Because it avoids the Enter postback at any character input

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

And then I wanted to control when the TextBox has content, so I changed the js like this.

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

The control

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

But nothing happens. Anytime that I do Enter, the page postback.

I also added this in the code behind on the load page

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

My page is still doing postback at Enter key. The idea is to stop the Enter postback if at least has 3 characters. Any idea or another approach?

> -----------------EDIT--------------------

I added this function before the EnterEvent

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

But it blocks the Enter in all the page. Enter doesn't work AT ALL.

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

Well, I succeded! As I said in a previous comment, I tried like in the past adding a dummy button control and I transfered the event from the textbox and calling its click event. It's not CLEAN AT ALL but it works and I'm in a hurry. Thank you all you guys for answering. If someone can help still I would appreciate it. I'll continue reviewing this question. Thanks.

    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;"/>

解决方案

<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;
            }
        }

这篇关于在一个asp.net inputfield输入prevent回传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆