【问题标题】:Run code when user presses certain key in a textbox当用户在文本框中按下某个键时运行代码
【发布时间】:2015-08-19 20:16:44
【问题描述】:

我有一个用户需要输入电子邮件的 ASP.net 文本框。我需要检测用户何时键入分号 (;) 然后取消隐藏文本框并将焦点设置到该文本框。

【问题讨论】:

  • 所以在你的 textChanged 事件处理程序中,检查 textBox1.text 中的最后一个字节,看它是否是分号。如果是,请调用取消隐藏其他文本框并为其提供焦点的方法。
  • 我想立即去做一些事情,而不是等待回发,但如果我找不到其他任何东西,这种方法也可以。谢谢@WDS

标签: javascript jquery asp.net vb.net


【解决方案1】:

免责声明:这可能看起来有点“老套”,我相信有更好的方法来做到这一点。

您可以使用文本框的onkeypress,将其设置为JavaScript 函数。在 JavaScript 函数中,以编程方式“取消隐藏”并将焦点放在客户端的其他文本框上。无需回发。

JavaScript:

function checkForSemicolons(event) {
    var txtEmail = document.getElementById("<%= txtEmail.ClientID %>");
    if (event.keyCode === 59) {
        // unhide other textbox and give focus to it
    }
}

ASPX:

<asp:TextBox ID="txtEmail" onkeypress="checkForSemicolons(event)" runat="server" />

【讨论】:

  • 使用事件来确定按下的键可能比只检查索引更有效,因为在下一次击键时仍然会触发
  • 谢谢你,约翰尼 5!我已更新我的答案以检查密钥代码。
【解决方案2】:

OnKeypress 事件是从客户端触发的,因此您需要从客户端脚本中捕获它。

您可以使用 javascript 进行回发,然后将参数发送到服务器端,但通常您可以从客户端处理所有内容。 在 jquery 上你会有这样的东西:

$("TextboxID").keypress(function(e){
     //do something 
     //If you want to cause a postback use " __doPostBack('EventTaarget','Parameters');"
     //you can capture the key that was pressed on e.keycode (for keycodes list, check: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes)

})

在后面的代码中,您可以添加一些代码来捕获 page_load 上的此事件。

 Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
   If Me.Request("__EVENTTARGET") Is Nothing Then
       'do something - you can use the Parameter with: Me.Request("__EVENTARGUMENT")
   end if

end sub

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多