Имитация нажатия клавиши tab с помощью jQuery
у меня есть несколько текстовых полей на .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>
но это просто не работает! Что-то упускаешь, совершаешь ошибку?
вот некоторые ссылки, которые я использовал
4 ответов
попробуйте это:
$('.tg').bind('keypress', function(event) {
if(event.which === 13) {
$(this).next().focus();
}
});
или версия цикла:http://jsbin.com/ofexat/2
Я создал простой плагин jQuery что решает эту проблему. Он использует селектор": tabbable "jQuery UI, чтобы найти следующий элемент "tabbable" и выбрать его.
пример использования:
// Simulate tab key when enter is pressed
$('.tb').bind('keypress', function(event){
if(event.which === 13){
if(event.shiftKey){
$.tabPrev();
}
else{
$.tabNext();
}
return false;
}
});
из нескольких ответов я объединил идеальное решение для меня, где enter действует как вкладка на входах и выберите и фокусируется на следующем входе, выберите или textarea, а позволяет вводить внутри текстовой области.
$("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();
}
});