2017-01-19 19 views
2

позволяет сказать, что у нас есть два текстовых поля textbox1 и textbox2Как управлять ключом вкладки beahviour в javascript или jquery?

У меня есть курсор внутри textbox1, а затем я нажимаю клавишу Tab. Курсор перемещается в текстовое поле2. Как я могу управлять поведением ключа вкладки в javascript или jQuery. То, что я хочу сделать, - это момент, когда textbox1 выбрасывает фокус, я хочу проверить какое-то условие (business condition) и на его основе. Я хочу разрешить поведение ключа табуляции по умолчанию или навести курсор туда, где я хочу.

Может ли кто-нибудь вести меня, как мы можем это сделать?

То, что я предполагаю, это поток событий : нажатие клавиши ввода в текстовом поле1->textbox1 focusout event->textbox2 selected. В основном я хочу некоторый контроль после события фокуса и перед выбором textbox2. Я раньше использовал событие JQuery focusout но то, что он делает это, он стреляет focusout события, а также выбирает textbox2, поражение цели, где я хочу, чтобы проверить, какое-то состояние до textbox2 выбран

+0

вы можете попробовать TabIndex недвижимость –

+0

Я думаю, вы должны проверить, что условие в 'keyup' случае 'textbox1' и вручную сфокусироваться на' следующий элемент'. –

+0

, так что в основном вы хотите управлять следующим текстовым полем, чтобы сфокусироваться при нажатии клавиши вкладок, я прав? – Roljhon

ответ

4

сначала нужно найти Keycodetab

$("#findKey").on("keydown", function(event) { 
 
    $("#log").html(event.type + ": " + event.which); 
 
});
<input id="findKey" value="type something"> 
 
<div id="log"></div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

затем вы можете установить функцию щелчка затем установить условие

$(document).on('keydown', function(event){ 
 
    if(event.which == 9){ 
 
    alert("now you are clicked tab"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

Или может быть, вы должны изменить порядок вкладок вот что вам нужно вы можете использовать tabindex свойству

Все элементы (кроме скрытых элементов) в HTML форме являются частью формы-х порядок вкладок. Когда пользователь нажимает клавишу Tab, браузер сдвигает фокус ввода от элемента к элементу, чтобы элементы отображались в коде HTML. Однако иногда вы хотите, чтобы порядок вкладок несколько отличался. В этом случае вы можете указать поля с помощью атрибута tabindex.

Посмотрите на пример:

<form> 
 
    Field 1 (first tab selection): 
 
    <input type="text" name="field1" tabindex=1 /><br /> 
 
    Field 2 (third tab selection): 
 
    <input type="text" name="field2" tabindex=3 /><br /> 
 
    Field 3 (second tab selection): 
 
    <input type="text" name="field3" tabindex=2 /><br /> 
 
</form>

Порядок табуляции начинается с элементов с явными значениями TabIndex, начиная от самых низких до высоких цифр. Тег с одинаковыми значениями получает вкладку в том порядке, в котором они отображаются в документе. Чтобы исключить элемент из порядка табуляции, установите значение tabindex равным 0. В этом случае элемент пропускается, когда пользователь нажимает на форму.

Атрибут TabIndex также может быть использован с <a><textarea><select> и элементов.

пожалуйста ссылаются эти ссылки

https://msdn.microsoft.com/en-us/library/aa733550(v=vs.60).aspx

https://www.paciellogroup.com/blog/2014/08/using-the-tabindex-attribute/

+0

Каков поток поведения ключа вкладки. то, что я предполагаю, является нажатием клавиши tabbox1-> textbox1focusout-> выбрать следующий texbox (textbox2) – Chetan

+0

Спасибо, отличный ответ, но я ищу что-то еще. Я снова обновил этот вопрос. то, что я хочу, - это некоторый контроль до того, как будет выбран следующий текстовый блок2 и после фокуса textbox1 – Chetan

0

В вашем вопросе, вы упоминаете как вкладку, нажав и "момент TextBox1 кидает focusout событие".

Вы можете сделать это с помощью события blur, проверьте ваше состояние и, если не удалось, переориентируйте управление.

Добавляя класс, вы можете применить то же событие для любого управления:

$(".required").blur(function(e) { 
 
    if ($(this).val() == "") 
 
     $(this).focus(); // or redirect to any other input 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id='textbox1' class='required'> 
 
<input id='textbox2' class='required'> 
 
<input id='textbox3' class='notrequired'>