在文本框中按Enter键时,如何使用JQuery专注于提交按钮?

时间:2010-11-10 17:23:09

标签: javascript asp.net jquery

我有一个包含多个文本框的页面,每个文本框都有一个与之关联的按钮。我认为这可以作为搜索“中心”,用户可以按ID,名称等进行搜索。

输入搜索字词时,例如但是,按下输入“点击”页面上的第一个按钮(ID搜索),如果关联的文本框为空(如果有人打算按名称搜索,则会导致错误)。

我试图使用JQuery纠正这个问题,并编写了以下内容:

$('input:text').click(function (e) {
            e.preventDefault();
            $(this).next('input:button').focus();
    });

我只是使用click事件,以便我可以监视焦点重定向的位置,但最终我会使用.keypress。但是,单击文本框后没有任何反应,我无法看到我的生活中JQuery有什么问题。

非常感谢任何建议!

要详细说明问题,所使用的.NET代码在整个页面中看起来类似于以下内容。

<tr>
    <td style="width:100">Company ID</td>
    <td style="margin-left:3px;">
      <asp:TextBox ID="...TextBox" runat="server" Width="230px"></asp:TextBox>
    </td>
    <td>
    <asp:Button CssClass="Button" ID="...NameSearch" Text="Search" runat="server" /></td></tr>

这是生成此(查看源):

<td><input name="...TextBox" id="...TextBox" style="width: 230px;" type="text"/></td>
<td><input name="...NameSearch" class="Button" id="...NameSearch" onclick="javascript:__doPostBack('...NameSearch','')" type="button" value="Search"/></td>

6 个答案:

答案 0 :(得分:1)

这些是提交按钮吗?如果是这样,点击一个将提交所有这些数据。这听起来更像是一个HTML问题,而不是jQuery。你能链接这个网站吗?

答案 1 :(得分:1)

$('input:text')keydown(function(e) {
  if (e.keyCode == 13) {
    $("input:submit", $(this).closest('tr')).eq(0).focus();
  }
}

答案 2 :(得分:0)

不是试图聚焦您想要点击的按钮,而是通过文本字段取消提交请求,而不是触发您想要的任何按钮的点击。

答案 3 :(得分:0)

您的提交按钮是文本框的下一个兄弟吗?如果没有,则next()功能不是您想要的。如果两者之间的dom中还有其他内容,您可以使用nextAll()代替它。

<强>更新

现在您已将标记添加到问题中,我可以看到为什么这些next()函数都不起作用 - 您的按钮不是文本框的兄弟(因为它们包含在单独的表格单元格中)。

答案 4 :(得分:0)

如果您只是在文本框中按Enter键时尝试自动单击按钮,则不需要jquery来执行此操作。查看asp Panel控件的DefaultButton属性

<asp:Panel runat="server" DefaultButton="myButton">
    <asp:TextBox runat="server" ID="myTextBox" />
    <asp:Button runat="server" ID="myButton" Text="Click" />
</asp:Panel>

答案 5 :(得分:0)

您不能使用next(),因为文本框和按钮不在DOM的同一级别上。你的按钮有一个ID,你可以使用$('#... NameSearch')。focus();