【问题标题】:c# keydown code not workingc#keydown代码不起作用
【发布时间】:2016-07-19 14:22:53
【问题描述】:

我有一个用于按关键字进行研究的文本框。我有复选框来过滤结果,还有一个图表来显示表格中关键字的出现。一旦您单击为其创建的按钮,搜索就完成了,如果我单击 Enter Key,它也可以工作。问题是,如果我决定选中 2 个复选框并单击 Enter,则不会进行研究,或者如果我更改关键字并再次单击 Enter,则不会进行图表的结果。每当我单击按钮或 Enter 时,我都希望它能够工作。

我正在使用我在互联网上看到的 KeyDown,但它没有改变任何东西,也没有错误。

我的代码:

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            Populate();

        }

        protected void tbSearch_KeyDown(object sender, KeyEventArgs e) 
        {
            if (e.KeyCode == Keys.Enter)
                btnSearch_Click(null, null);
        }

有人可以帮助我吗?

【问题讨论】:

  • 请发minimal reproducible example,我们不想读100行代码。
  • keydown 事件处理程序绑定到文本框,因此仅当文本框具有当前输入焦点时才会触发。如果要在表单级别获取它,则需要将表单 KeyPreview 属性设置为 true 并将处理程序添加到表单 keydown 事件

标签: c# asp.net .net webforms


【解决方案1】:

在您的文本框中,只需

  • 添加属性autopostback="true"
  • 添加属性 OnTextChanged="btnSearch_Click"

它会在没有 JQuery 的情况下做你想做的事

--> autopostback:触发事件时回发到服务器

--> OnTextChanged:当你离开文本框(或回车)时,触发事件并进入你的搜索功能

【讨论】:

    【解决方案2】:

    好的,我找到了问题,我没有提到我正在使用更新面板。 所以这是为我工作的代码:

    $('#tbSearch').keydown(function (e) {
        var key = e.which;
        if (key == 13)  // the enter key code
        {
            //your code
        }
    });
    

    要使该代码与 updatePanel 一起工作:

    //On UpdatePanel Refresh.
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm != null) {
        prm.add_endRequest(function (sender, e) {
            if (sender._postBackSettings.panelsToUpdate != null) {
    
                $('#tbSearch').keydown(function (e) {
                    var key = e.which;
                    if (key == 13)  // the enter key code
                    {
                      // your code
                    }
                });
             }
        });
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多