2013-04-23 4 views
0

У меня есть калькулятор HTML на моей веб-странице. То, что я пытаюсь сделать, это выбрать поле input, а затем ввести значения, щелкнув нумерованные элементы div, но когда я нажимаю на input, а затем на div, фокус приходит к div. Как я могу предотвратить это с помощью jQuery.Предотвращение фокуса от выбранного элемента

HTML calculator

В следующем fiddle вы увидите, что, когда я нажимаю на входном элементе и попытаться ввести значения, основное внимание будет оставить! Как я могу исправить это и записать соответствующее значение в поле ввода?

+1

если вы этого избежать щелчка не будет пойманными на DIV, который вам нужен, а в ДИВ нажмите ручку вернуть фокус к введенному. – slash197

+1

Вам лучше сделать простой пример jsFiddle с некоторым кодом, а не снимок экрана. –

+0

Фокус должен прийти или не должен прийти в поле ввода? –

ответ

0

определить переменный на документе, готового

var focusedInput;

если фокус изменение любого входного магазина, что вход в focusedInput

focusedInput = $(this);

на сОн мыши написать код

$('div.num-button').click(function(){

//some code here

$(focusedInput).focus(); //handle null exception

});

0

Я знаю, что это очень поздно, однако, если кто-то приходит ищет этот ответ может быть полезным.

Как сказал @anil, создайте переменную, в которой вы можете сохранить ваш сфокусированный вход. Затем, когда вы фокусируетесь на своем вводе, сохраните элемент в переменной. Теперь, когда вы нажимаете на свою «клавиатуру», получите значение и добавьте его к сфокусированному значению входного параметра.

Здесь my fiddle, что я отделил от вас оригинальную скрипку.

Это код:

var focused; 
// Stored the input 
$('input').focus(function() { 
    focused = $(this); 
}); 

// Listen for clicks on the number button 
$('.num-button').click(function(){ 
    // Get the value of the number button that was clicked as string 
    var intVal = $(this).find('span').text().toString(); 
    // Make sure that we have a focused input 
    if(typeof focused != 'null' || typeof focused != 'undefined') { 
     // Only add numbers to the input field 
     if(intVal != "DONE" && intVal != "Del") { 
      // Get the values as strings 
      var curVal = focused.val().toString(), 
       newVal = curVal + intVal; 
      focused.val(newVal); 
     } else if (intVal == "Del") { 
      // Clear the value if the Del "key" was clicked. 
      focused.val(''); 
     } 
    } 
}); 
Смежные вопросы