2012-02-21 2 views
4

(простите за мой английский)JQuery фокус изменения на вкладке или focusout

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

<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_button ориентирован на изменение 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(); 
}); 

Но не работает либо .....

Можете ли вы дать некоторые руководящие принципы для acomplish это?

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

ответ

3

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

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

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

$('.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; 
}); 

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

+0

Спасибо, второй вариант отлично работает. – alsobubbly

Смежные вопросы