我正在开发一个Javascript虚拟键盘,我希望它每次出现时都按用户输入的文本字段。但是如何知道是否选择了文本(或任何输入)字段?Javascript虚拟键盘:如何识别文本字段?
--clarification
我必须在将要加载的页面信息或控制。我只是想,如果一个输入字段被选中,并且用户按下回车键,我的虚拟键盘就会显示出来。
--update
它使假如我想要做的是一个Firefox扩展有什么区别? (我认为它不应该)
我正在开发一个Javascript虚拟键盘,我希望它每次出现时都按用户输入的文本字段。但是如何知道是否选择了文本(或任何输入)字段?Javascript虚拟键盘:如何识别文本字段?
--clarification
我必须在将要加载的页面信息或控制。我只是想,如果一个输入字段被选中,并且用户按下回车键,我的虚拟键盘就会显示出来。
--update
它使假如我想要做的是一个Firefox扩展有什么区别? (我认为它不应该)
我的解决办法目前,只是在用户请求时才使用指定的键来打开虚拟键盘。
将它绑定到onfocus事件。该事件在输入元素获得焦点时触发。如果您想再次隐藏,您可以在onblur事件中再次移除键盘。
我没有组件ID。我希望当页面上的任何输入组件集中时,我的虚拟键盘就会显示出来。 – 2010-11-29 14:25:12
得到通知,一个文本字段中选择,您可以附加一个事件处理你感兴趣的领域的onfocus
。jQuery中(JQ选择了简洁
例如,事件工作在纯JS ):
$('input[type="text"]').focus(function(event){
// do something here
});
如果你只关心捕捉“ENTER”键,你并不需要担心的焦点,只是附加到文本框的onkeypress事件的事件(见@ poelinca的答案)。
我没有组件ID。我希望当页面上的任何输入组件集中时,我的虚拟键盘就会显示出来。 – 2010-11-29 14:26:11
@汤姆布里托:上面的规则匹配任何文本输入元素,你不需要知道组件ID。 – Piskvor 2010-11-29 14:47:58
使用jQuery并添加以下
$(document).ready(function() {
//apply action to input elements by class
//$("#.input_class").keypress(function(e) {
//apply action to all input elements (input, textarea, select and button)
$(':input').keypress(function(e) {
if(e.keyCode==13){
// Enter pressed... do anything here...
alert($(this).val());
} else {
//make shure you get the desired action for other keys pressed
xTriggered++;
}
//do not submit the form
return false;
});
});
尽管apologetes说什么jQuery的,没有麻烦到仪器上的所有领域,而不诉诸大而慢的外部库:
for (var i = 0; i < document.forms.length; i++)
for (var j = 0; j < document.forms[i].elements.length; j++)
if (document.forms[i].elements[j].tagName.match(/^INPUT$/i))
if (document.forms[i].elements[j].type.match(/^TEXT$/i))
document.forms[i].elements[j].addEventListener('focus', function(){/* your stuff here */}, false);
jQuery是一个选项吗? – 2010-11-26 14:56:31
@FrédéricHamidi是的 – 2010-11-29 14:26:35