2012-03-02 2 views
0

вот мой код, чтобы сосредоточиться на «text2display», если щелкнуть в любом месте формы (которая находится во всплывающем окне). но, как если бы они «Вкладка» и перейдите в другом месте (например, браузер URL), как обнаружить, что и возвращать фокус назад «» text2display "обнаружение ввода считывателя штрих-кода

$("#barcode_form").click(function(){ 
    var focusedElement = ""; 
    $(":focus").each(function(){ 
    focusedElement = $(this).attr("id")     
    }); 
    if(focusedElement == ""){ 
    $('#text2display').focus() 
    } 
}) 
+0

Какой браузер это будет работать? Это на мобильном устройстве или на рабочем столе? –

ответ

0

Вы будете желая .blur();? функция . Всякий раз, когда элемент имеет «фокус» и пользователь покидает «целенаправленный» пункт «размытие» вызывается и посылает событие обратно к элементу. пример для подражания.

if(focusedElement == ""){ 
    //if our focused element is empty 
    $('#text2display').live('blur', function(){ 
    //when the target loses focus, we invoke blur, the next line focuses again. 
    //it's also a best practice to do something like fading in the border, 
    $("#text2display").focus(); 
    }); 
} 

Кроме того, если я могу предложить , было бы неплохо сообщить пользователю, что их фокус вернулся к этому элементу. Лучший способ сделать это - сделать что-то вроде добавления «красной» границы, а затем погасить границу. Один из способов: ->

if(focusedElement == ""){ 
    //if our focused element is empty 
    $('#text2display').live('blur', function(){ 
    //when the target loses focus, we invoke blur, the next line focuses again. 
    //it's also a best practice to do something like fading in the border, 
    $("#text2display").focus(function(){ 
     $(this).animate({ 
     //when the element has been re-focused, we'll give it a red border briefly. 
     borderColor: '#ff0000'; 
     }, function(){ 
      //once the animation completes, fade the border out      
      $(this).animate({ borderColor: 'transparent' }, 2000); 
     } 
    ); 
    }); 
    }); 
} 

Кроме того, поскольку мы не хотим изменения размера проблемы, нам нужно добавить некоторые CSS наши входы

input{ 
    border:1px solid transparent; 
} 

Это должно хорошо работать для вас.

+0

спасибо за ваш ответ Ohgodwhy, но, похоже, не работает. Кроме того, я ищу замену для «$ (« # barcode_form »). click (function()», так как я хочу обнаружить любой ввод со штрих-кода, когда всплывающее окно находится на –

+0

Кстати, это вы имеете в виду: –

+0

$ ("#barcode_form") нажмите (функция() { вар focusedElement = ""; $. (": фокус") каждая (функция() { focusedElement = $ (это) .attr (. "идентификатор") });. если (focusedElement == "") { $ ('# text2display') жить ('размытость', функция() { $ ("# text2display"). Focus() }); } }) –

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