我的网页中有一个 HTML 计算器。我想要做的是选择一个input
字段,然后通过单击编号的div
元素输入值,但是当我单击input
和之后div
,焦点来到div
. 如何使用 jQuery 防止这种情况发生。
在下面的小提琴中,您会看到当我单击输入元素并尝试输入值时,焦点将离开!如何解决此问题并在输入字段中记录相关值?
在准备好的文档上定义一个变量
var focusedInput;
如果焦点更改为在focusedInput 中输入的任何输入存储
focusedInput = $(this);
在 div 点击写你的代码
$('div.num-button').click( function(){
//some code here
$(focusedInput).focus(); //handle null exception
});
我知道这已经很晚了,但是,如果其他人来看这个答案可能会有所帮助。
正如@anil 所说,创建一个变量,您可以在其中存储焦点输入。然后,当您专注于输入时,将元素存储在变量中。现在,当您单击“键盘”时,获取值并将其添加到焦点变量输入值中。
这是我从你原来的小提琴分支出来的小提琴。
这是代码:
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('');
}
}
});