2

我正在使用带有 C# 后端的 ASP.NET 站点。标签所在的地方有一个.Master页面,填写表格后按回车键会搜索网站上的其他搜索页面。但是,我们有一页有几个文本框,当您按 Enter 进行搜索时,它似乎只是刷新并重新加载页面而不搜索。为了搜索,您必须点击搜索按钮(这是一个 igtxt:WebImageButton )。到目前为止,我发现的所有解决方案都涉及人们使用 javascript 在提交时调用某种函数。据我所知,当您点击搜索按钮时没有调用 javascript,它全部在 C# 代码中。我再次发现自己在 SO 和其他网站上寻找答案,但似乎没有一个解决方案适合我的情况。表单标签如下:

<form id="form1" runat="server">

Web 图像按钮调用运行搜索代码的 btn_SearchClick 函数。但由于表单是在 .Master 文件中启动的,因此我无法对其进行编辑,因为它也会影响所有其他页面。有没有办法让输入从表单中调用 btn_SearchClick 而不必将其放在表单标签中?我不确定会发生什么变化以导致在一页上出现这种行为,而在其他页面上都没有。

4

2 回答 2

1
if (!IsPostBack)
{
   TextBox1.Attributes.Add("onKeyPress", 
                   "doClick('" + btnSearch.ClientID + "',event)");
}
<SCRIPT type=text/javascript>
    function doClick(buttonName,e)
    {
        //the purpose of this function is to allow the enter key to 
        //point to the correct button to click.
        var key;

         if(window.event)
              key = window.event.keyCode;     //IE
         else
              key = e.which;     //firefox

        if (key == 13)
        {
            //Get the button the user wants to have clicked
            var btn = document.getElementById(buttonName);
            if (btn != null)
            { //If we find the button click it
                btn.click();
                event.keyCode = 0
            }
        }
   }
</SCRIPT>

或者你可以使用默认按钮。当光标在这个框中时它可以工作

protected void Page_Load(object sender, EventArgs e)
        {
            this.Form.DefaultButton = this.btnSubmit.UniqueID;
        }
于 2013-11-12T15:39:25.347 回答
0

添加一些jquery来控制文本框上的 Enter 键行为。像这样的东西:

$(function() {
  $('#<%=txtTextbox.ClientID%>').keypress(function (e) {
    if (e.which == 13) {
      e.preventDefault();
      $('#<%=btn_SearchClick.ClientID%>').click();
    }
  });
});
于 2013-11-12T15:17:19.733 回答