簡體   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