Javascript事件:如何在ALT+;输入NUM字符
我首先使用onKeyUp事件来检测文本框中的输入更改。但是,当用户使用ALT+Num输入法语字符时,事件不会检测到更改,直到我输入下一个字符 我应该使用哪个事件来检测特殊角色的变化。我试过一次,但似乎不起作用 我尝试过使用onkeypress事件,因为我注意到它在我释放ALT键后会触发它,但是即使释放ALT键后,onkeypress会被触发,并且您会看到重音字符,但是当我对inputbox使用this.value时,它只会在输入新的ALT+Num字符之前注册 例如:我输入了vidé,但搜索不会动态查找vidé,而只查找vidé,因为在触发另一个键事件之前,尚未将é保存在-this.value中 因此,我想知道是否有办法模拟/发送一个按键来触发它。有一个参考,在这个参考上看一看可能是个好主意,根据第2.1节,ALT应该在现代浏览器中生成一个keydown和keydup 我建议您使用jQuery或类似的库来缓解跨浏览器面临的问题。请看一看效果良好的概念证明Javascript事件:如何在ALT+;输入NUM字符,javascript,Javascript,我首先使用onKeyUp事件来检测文本框中的输入更改。但是,当用户使用ALT+Num输入法语字符时,事件不会检测到更改,直到我输入下一个字符 我应该使用哪个事件来检测特殊角色的变化。我试过一次,但似乎不起作用 我尝试过使用onkeypress事件,因为我注意到它在我释放ALT键后会触发它,但是即使释放ALT键后,onkeypress会被触发,并且您会看到重音字符,但是当我对inputbox使用this.value时,它只会在输入新的ALT+Num字符之前注册 例如:我输入了vidé,但搜索不会动
按键并不仅仅是由修改器按下触发的,所以这可能是一种方法,它允许您拾取输入的字符,而不是按下哪个键。编辑:在Fx中,按键似乎不是由修改器触发的,但我无法复制实际丢失的任何字符。使用
keyup
。在用户释放ALT键之前,不会添加新字符,此时将触发keyup
事件。您需要绑定onkeypress
,直到您完成输入ALT代码后才会触发
document.getElementById('input')。onkeypress=function(){
警报(“开火”);
}
终于明白了!!:D
下面是代码,不过是字符串转换事件。虽然在JSFIDLE上哪种代码不起作用,但代码仍然起作用:)
$('#i').keydown(函数(){
document.getElementById('j').value=“down”;
$('k').val($('i').val())
});
$('#i').keyup(函数(){
document.getElementById('j').value=“up”;
$('k').val($('i').val())
});
$('#i')。按键(函数(事件){
$('#k').val(String.fromCharCode(event.keycode));
});
$('#i')。更改(函数(){
document.getElementById('j').value=“change”;
});代码>
使用ALT+NUM组合输入的字符将仅在keyup
事件触发器之后添加到输入元素的值中,因此您将无法在该事件处理程序中读取它
为了解决此问题,您可以在读取输入元素的值之前设置ALTkeyup
事件的超时:
$('input').on('keyup', function (e) {
var _this = this;
var ALT_KEY_CODE = 18;
if (e.which == ALT_KEY_CODE) {
setTimeout(function () {
handleKeyup.call(_this , e);
}, 1);
} else {
handleKeyup.call(_this , e);
}
});
function handleKeyup (e) {
// $(this).val() now holds the ALT+NUM char
}
我想他指的是alt代码,比如我试过的。。但唯一的问题是,在按下另一个键之前,输入的新字符不会保存在此.value中。我正在做一个动态搜索,当用户输入字符列表更新时,事件正在触发,只是值不是您期望的值。您可以通过添加console.log('fired')进行测试代码>到事件。下面是我所做的简单演示。。。在顶部输入框中键入时,该值将复制到第二个框中。。如果在顶部输入alt+num,您将看到第二个键在按下另一个键之前不会更新。如何解决这一问题。我也尝试过这样做:使用所有其他关键事件,但仍然相同。。alt+num在按下另一个键之前不会被保存。在linux上的Chrome和Fx中,在第一个示例中,第二个输入总是落后一个,在新字符附加到值之前会触发按键,而不考虑修改器。但是,当我简单地按下并释放一个修改器时,Fx会触发一个额外的按键。所以不能重现你的问题。。对我来说,你的第二个例子在两种浏览器中都运行良好。不考虑修改器的精确副本。我使用的是挪威键盘,它有alt gr+num goodness。我也这么想?无法对任何有用的内容使用左alt