jquery 屏幕键盘的 oninput 事件
oninput event for jquery onscreen keyboard
我有一个文本区域,我希望每次用户输入内容时发生一些事情,现在我有以下两行代码可以工作:
<textarea oninput="alert('')" id="write" rows="6" cols="60"></textarea>
和
<textarea onkeyup="alert('')" id="write" rows="6" cols="60"></textarea>
但是,这仅适用于真实键盘。当我使用虚拟屏幕键盘时,永远不会触发警报。
我创建了一个 jsfiddle,这是 javascript:
$(function(){
var $write = $('#write'),
shift = false,
capslock = false;
$('#keyboard li').click(function(){
var $this = $(this),
character = $this.html(); // If it's a lowercase letter, nothing happens to this variable
// Shift keys
if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
$('.letter').toggleClass('uppercase');
$('.symbol span').toggle();
shift = (shift === true) ? false : true;
capslock = false;
return false;
}
// Caps lock
if ($this.hasClass('capslock')) {
$('.letter').toggleClass('uppercase');
capslock = true;
return false;
}
// Delete
if ($this.hasClass('delete')) {
var html = $write.html();
$write.html(html.substr(0, html.length - 1));
return false;
}
// Special characters
if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
if ($this.hasClass('space')) character = ' ';
if ($this.hasClass('tab')) character = "\t";
if ($this.hasClass('return')) character = "\n";
// Uppercase letter
if ($this.hasClass('uppercase')) character = character.toUpperCase();
// Remove shift once a key is clicked.
if (shift === true) {
$('.symbol span').toggle();
if (capslock === false) $('.letter').toggleClass('uppercase');
shift = false;
}
// Add the character
$write.html($write.html() + character);
});
});
如何更改它以使屏幕键盘具有与普通键盘相同的效果?
您可以在更改 textarea
的内部 html 时手动触发 input
事件。
$('textarea').trigger('input');
这是更新后的 JSFiddle link:https://jsfiddle.net/tpztp48r/4/
我有一个文本区域,我希望每次用户输入内容时发生一些事情,现在我有以下两行代码可以工作:
<textarea oninput="alert('')" id="write" rows="6" cols="60"></textarea>
和
<textarea onkeyup="alert('')" id="write" rows="6" cols="60"></textarea>
但是,这仅适用于真实键盘。当我使用虚拟屏幕键盘时,永远不会触发警报。
我创建了一个 jsfiddle,这是 javascript:
$(function(){
var $write = $('#write'),
shift = false,
capslock = false;
$('#keyboard li').click(function(){
var $this = $(this),
character = $this.html(); // If it's a lowercase letter, nothing happens to this variable
// Shift keys
if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
$('.letter').toggleClass('uppercase');
$('.symbol span').toggle();
shift = (shift === true) ? false : true;
capslock = false;
return false;
}
// Caps lock
if ($this.hasClass('capslock')) {
$('.letter').toggleClass('uppercase');
capslock = true;
return false;
}
// Delete
if ($this.hasClass('delete')) {
var html = $write.html();
$write.html(html.substr(0, html.length - 1));
return false;
}
// Special characters
if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
if ($this.hasClass('space')) character = ' ';
if ($this.hasClass('tab')) character = "\t";
if ($this.hasClass('return')) character = "\n";
// Uppercase letter
if ($this.hasClass('uppercase')) character = character.toUpperCase();
// Remove shift once a key is clicked.
if (shift === true) {
$('.symbol span').toggle();
if (capslock === false) $('.letter').toggleClass('uppercase');
shift = false;
}
// Add the character
$write.html($write.html() + character);
});
});
如何更改它以使屏幕键盘具有与普通键盘相同的效果?
您可以在更改 textarea
的内部 html 时手动触发 input
事件。
$('textarea').trigger('input');
这是更新后的 JSFiddle link:https://jsfiddle.net/tpztp48r/4/