jQuery изменить фокус на вкладке или фокус - PullRequest
4 голосов
/ 21 февраля 2012

(простите за мой английский)

Привет !, я использую jquery в приложении, где у меня есть динамически созданная таблица с текстовым вводом внутри, как это:

<td><input type="text" id="code"></td>
<td><select id="type"><option value="0">Normal</option><option value="1">Other</option></select></td>
<td><input type="text" id="price" class="price"></td>
<td><input type="text" id="total"></td>

и в другой части у меня есть кнопка, при нажатии этой кнопки создайте в таблице еще одну строку.

Контейнер этой таблицы и кнопки существует внутри шаблона .. этот шаблон отображается с использованием underscore.js

Теперь проблема: мне нужно перебирать входные данные по порядку: код, тип, цена. Когда я заполняю входную цену, я вычисляю итоговую сумму и отображается во входных данных, а затем мне нужно изменить фокус на кнопку (#more_button), чтобы позволить пользователю щелкнуть или нажать клавишу ввода, чтобы создать еще одну строку в таблице.

Я использую это:

$('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').focus();

    e.preventDefault();
    e.stopPropagation();
});

Когда фокусируется кнопка #more_, изменение фона CSS.

Когда я выполняю этот фрагмент кода, кнопка меняет фон, но фокус сразу же меняется на строку URL. Это произошло в Firefox и Chrome.

Я пытаюсь использовать это, чтобы установить фокус:

   $('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').;
    setTiemout(function(){
         $('#more_button').focus();
    },100);
    e.preventDefault();
    e.stopPropagation();
}); 

Но тоже не работают .....

Можете ли вы дать какое-то руководство по этому вопросу?

Пользователь может изменить фокус input.price, когда нажимает Tab или щелкает в другой части страницы. В этот момент мне нужно активировать seTotal и сфокусироваться на кнопке.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Я не знаю, что простой метод

$('your_selector').focusout(function(){
   $('#more_button').focus();
});

не работает с клавишей табуляции (только с помощью мыши для изменения фокуса) .. поэтому я решил использовать сочетание между событием нажатия клавиши иfocusout.например:

$('.price').bind('keydown',function(e){
    if(e.keyCode === 9){//Tab key
    tab = true;
    check(e);
        return false;
}

 }).bind('focusout',function(e){
if(!tab){
    check(e);
}else{
    tab = false;    
} 
e.preventDefault();
return false;
 });

, где check () - это функция для проверки значения, а tab - это флаг, чтобы проверить, была ли нажата клавиша табуляции.

1 голос
/ 21 февраля 2012
$('your_selector').focusout(function(){
  $('#more_button').focus();
});

работает здесь как минимум в FF и chrome.

здесь скрипка: http://jsfiddle.net/Zabn4/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...