我有一个包含多个文本框的页面,每个文本框都有一个与之关联的按钮。我认为这可以作为搜索“中心”,用户可以按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>
答案 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();