我在.net页面上有一些文本框,希望通过jQuery实现以下功能:如果用户按下return,程序的行为应该"像"他使用了tab键,从而选择下一个元素。我尝试了以下代码(以及更多):
<script type="text/javascript">
jQuery(document).ready(function () {
$('.tb').keypress(function (e) {
if (e.keyCode == 13)
{
$(this).trigger("keydown", [9]);
alert("return pressed");
}
});
});
<asp:TextBox ID="TextBox1" runat="server" CssClass="tb"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" CssClass="tb"></asp:TextBox>
但它就是不起作用!错过了什么,犯了错误?
这里的一些链接我使用
此处
此处
试试这个:
http://jsbin.com/ofexat
$('.tg').bind('keypress', function(event) {
if(event.which === 13) {
$(this).next().focus();
}
});
或循环版本:http://jsbin.com/ofexat/2
我创建了一个简单的jQuery插件,它确实解决了这个问题。它使用jQuery UI的":tabable"选择器来查找下一个"tabable"元素并选择它。
示例用法:
// Simulate tab key when enter is pressed
$('.tb').bind('keypress', function(event){
if(event.which === 13){
if(event.shiftKey){
$.tabPrev();
}
else{
$.tabNext();
}
return false;
}
});
从多个答案中,我组合了一个完美的解决方案,输入作为输入的选项卡,选择并关注下一个输入、选择或文本区域,同时允许在文本区域内输入。
$("input,select").bind("keydown", function (e) {
var keyCode = e.keyCode || e.which;
if(keyCode === 13) {
e.preventDefault();
$('input, select, textarea')
[$('input,select,textarea').index(this)+1].focus();
}
});
试试这个
$(this).trigger({
type: 'keypress',
which: 9
});