Подтвердить что ты не робот

Событие пожарной тревоги при нажатии клавиши ввода для текстового поля

У меня есть следующий элемент управления textbox asp.net.

<asp:TextBox ID="txtAdd" runat="server" />

После того, как пользователь что-то пишет в этом текстовом поле и нажимает клавишу ENTER, я хочу запустить код из кода.

Что мне делать?

Используя jQuery, я записал клавишу ENTER и запустил событие скрытой кнопки

$(document).ready(function(){ 
   $(window).keydown(function(e){
      if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
   }); 
});

Есть ли лучший способ?

4b9b3361

Ответ 1

ASPX:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>    
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" />

JS:

function EnterEvent(e) {
        if (e.keyCode == 13) {
            __doPostBack('<%=Button1.UniqueID%>', "");
        }
    }

CS:

protected void Button1_Click1(object sender, EventArgs e)
    {

    }

Ответ 2

  • Оберните текстовое поле внутри тегов asp:Panel

  • Скрыть кнопку, которая имеет событие click, которое делает то, что вы хотите, и присвоить атрибуту <asp:panel> a DefaultButton идентификатор скрытой кнопки.

<asp:Panel runat="server" DefaultButton="Button1">
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>    
   <asp:Button ID="Button1" runat="server" style="display:none" OnClick="Button1_Click" />
</asp:Panel>

Ответ 3

Вы можете обернуть текстовое поле и кнопку в ASP: Panel и установить свойство DefaultButton панели на идентификатор вашей кнопки Submit.

<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton">
    <asp:TextBox ID="TextBox1" runat="server" />
    <asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" />
</asp:Panel>

Теперь, когда фокус находится внутри панели, событие "SubmitButton_Click" будет срабатывать при нажатии клавиши ввода.

Ответ 4

Ответ ahaliav fox правильный, однако есть небольшая проблема с кодированием.
Изменение

<%=Button1.UniqueId%> 

к

<%=Button1.UniqueId%> 

он чувствителен к регистру. Свойство Control.UniqueID

Ошибка 14 "System.Web.UI.WebControls.Button" не содержит определения для "UniqueId" и никакого метода расширения "UniqueId", принимающего первый аргумент типа "System.Web.UI.WebControls.Button", может (вам не хватает директивы использования или ссылки на сборку?)

N.b. Я попробовал событие TextChanged сам на AutoPostBack, прежде чем искать ответ, и хотя он почти прав, он не дает желаемого результата, который я хотел бы, или для заданного вопроса. Он срабатывает при потере фокусировки на Textbox, а не при нажатии клавиши возврата.

Ответ 5

Мое решение для jQuery приведено ниже:)

Текстовый элемент:

<asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox>
<asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" />

Javascript позади:

<script type="text/javascript" language="javascript">
    function fnCheckValue() {
        var myVal = $("#txtTextBox").val();
        if (myVal == "") {
            alert("Blank message");
            return false;
        }
        else {
            return true;
        }
    }

    function EnterEvent(e) {
        if (e.keyCode == 13) {
            if (fnCheckValue()) {
                $("#btnSubmitButton").trigger("click");
            } else {
                return false;
            }
        }
    }

    $("#btnSubmitButton").click(function () {
        return fnCheckValue();
    });
</script>

Ответ 6

<asp:Panel ID="Panel2" runat="server" DefaultButton="bttxt">
    <telerik:RadNumericTextBox ID="txt" runat="server">
    </telerik:RadNumericTextBox>
    <asp:LinkButton ID="bttxt" runat="server" Style="display: none;" OnClick="bttxt_Click" />
</asp:Panel>

 

protected void txt_TextChanged(object sender, EventArgs e)
{
    //enter code here
}

Ответ 7

Попробуйте следующее: Aspx:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>    
<asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" />

JS:

function EnterEvent(e, callback) {
        if (e.keyCode == 13) {
            callback();
        }
    }

Ответ 8

Попробуйте эту опцию.

обновите эту часть кода в событии Page_Load перед тем, как поймать IsPostback

 TextBox1.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('ctl00_ContentPlaceHolder1_Button1').click();return false;}} else {return true}; ");

Ответ 9

<input type="text" id="txtCode" name="name" class="text_cs">

и js:

<script type="text/javascript">
$('.text_cs').on('change', function () {
var pid = $(this).val();
console.log("Value text: " + pid);
});
</script>

Ответ 10

My 2c.. Я использовал javascript, но обнаружил, что он сделал то, что не ожидалось.

ИСПОЛЬЗУЙТЕ атрибут/свойство defaultButton панели, как полагают многие из вышеперечисленных сообщений. Он надежный (EASY) и работает во всех браузерах, на которых я тестировал его.