我有两个事件处理程序,一个用于keydown,一个用于keyup。keydown事件处理程序会触发警报消息,但这可以防止触发keyup事件。
您可以在此处看到一个非常简单的示例:http : //jsfiddle.net/boblauer/jaGwT/ 当keydown打开警报时,不会触发该keyup,但是当未打开警报时,将触发该keyup。这是jsfiddle中的代码:
var i = 0;
window.addEventListener('keydown', function(e) {
if (i++ % 2) alert('down');
console.log('down');
});
window.addEventListener('keyup', function(e) {
alert('up');
console.log('up');
});
Run Code Online (Sandbox Code Playgroud)
我有一个支持监听多个组合键(例如'd + f')的库,因此当按下一个键时,我需要将其添加到当前按下的键列表中,并在释放一个键时,我需要将其从上述列表中删除。我要解决的问题是,如果我想同时显示d + f时显示警报,则从“当前按下”列表中删除这些键的代码永远不会触发,因为我的keyup处理程序从未被调用。
我想不出解决这个问题的好方法。有任何想法吗?
我有以下设置:
用法:
问题:
在IOS7的Safari上,蓝牙设备上的键盘事件处理方式似乎有所改变.代码 ...
window.onkeyup = function (e) {
console.log(e.KeyboardEvent)
}
Run Code Online (Sandbox Code Playgroud)
...应该返回有关按下的键的信息.相反,我得到......
keyCode: 0
keyIdentifier: "Unidentified"
Run Code Online (Sandbox Code Playgroud)
......无论我按哪个键.
同样的结果展位形式蓝牙扫描仪和蓝牙键盘.
谢谢/ E.
我需要一个输入 (type='text') 将结果发送到我的服务器以检查用户输入的内容的可用性。
我使用委托将事件处理程序添加到元素:
$(document).delegate('#signup', 'pageshow', function() {
var keydown = function(e) {
e = e || window.event;
var char = e.which || e.keyCode;
if (char == 8) {
$(".pagemessage").text("Pressed: '<BACKSPACE>'");
appcheckDomainOnKeyDown();
}
return true;
};
var keyup = function(e) {
e = e || window.event;
var char = e.which || e.keyCode;
if (char == 8) {
appcheckDomainOnKeyUp();
}
return true;
};
var keypress = function(e) {
e = e || window.event;
var char = e.which || e.keyCode;
var str …Run Code Online (Sandbox Code Playgroud) 我正在处理keyup事件,需要输入字符.当我键入一个点时,data.keyCode是190,但是当我尝试使用String.fromCharCode(190)转换它时,我得到了"¾"符号.
是否有可能绑定keyup()到整个<form>?例如,我<input type="text">在表单中有多个字段,我想将keyup事件绑定到所有字段,而不必将keyup事件处理程序附加到每个字段.相反,我想将一个keyup事件处理程序绑定到所有这些,所以如果任何文本字段检测到keyup事件,事件处理程序将运行.这在jQuery中是否可行?
我试过了
$('form').keyup(function() {...});
Run Code Online (Sandbox Code Playgroud)
但是在键入1个字符后,这使得keyup事件处理程序无限期地触发.
我有以下jQuery代码用于查找所有表行的总和,现在它在keyup上找到总和.我希望已经计算了总和.我希望有一个隐藏字段,如输入值,因此总和会自动计算.
现在有一个输入,用户写了一些数字,而不是他得到的总和,我试图自动得到总和.这是工作,但我需要在文本框 .... 输出打印 ....此代码
<table>
<tr>
<td width="40px">1</td>
<td>Number</td>
<td><input class="txt" type="text" name="txt" /></td>
</tr>
<tr>
<td>2</td>
<td>Number</td>
<td><input class="txt" type="text" name="txt" /></td>
</tr>
<tr>
<td>3</td>
<td>Number</td>
<td><input class="txt" type="text" name="txt" /></td>
</tr>
<tr id="summation">
<td colspan ="2" align="right">
Sum :
</td>
<td>
<span id="sum"><input class="txt" type="text" name="txt" />
</td>
</span>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function() {
//this calculates values automatically
calculateSum();
$(".txt").live("keydown keyup", function() {
calculateSum();
});
});
function calculateSum() {
var sum = 0;
//iterate through each …Run Code Online (Sandbox Code Playgroud) 我需要一些关于我调用onKeyUp的JavaScript函数的帮助,它是一个Ajax函数,但每次我写任何字符时它调用函数并且它会降低页面性能并且每次检查它都是用户检查数据库.
我试过这个:
var timer;
function chk_me(){
clearTimeout(timer);
timer=setTimeout(function validate(){...},1000);
}
Run Code Online (Sandbox Code Playgroud)
但我的验证函数有一个参数,所以我无法传递它,我调用这样的函数:
<input type="text" name="usuario" id="usuario" class="required" onKeyUp="chk_me();" minlegth="4" value=/>
Run Code Online (Sandbox Code Playgroud)
这样对吗?我该怎么办?
这是我的第一个问题,我希望大家都能理解
谢谢,Alberto
谢谢大家,因为我是新手,我不能用不同的答案来做,所以我用解决方案编辑了我的问题.我发现这个:http://bytes.com/topic/javascript/answers/451142-need-advice-acting-only-last-onkeyup-event-series并使用最后一个答案方法并添加一些代码,我留下你代码,就像它说这不是最好的方式,但如果你有其他方式,我将欣赏它,并在这里使用它是:
var keyCount = 0;
var timeoutCount = 0;
function handleKeyUp() // keyup handler
{
keyCount++;
setTimeout("compareCounts()", 500);
}
function compareCounts()
{
var usuario = document.profileForm.usuario.value;
timeoutCount++;
if (keyCount == timeoutCount)
{
xajax_checaUsuario(usuario);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我以这种方式采取var任何建议,使其更好?
谢谢
我已经制作了一个textarea表单,您可以在其中更改您的描述,并且在我的问题中,我问是否有任何方法可以禁用标签.但现在有什么方法当你按下将在textarea中设置Enter一个<br />以便用户不必<br />每次想要换行时输入?
我想到了一些事情,如果它能找到没有任何东西的地方,但这会有用吗?我不熟悉onpress事件...或者如果它在用户按下提交后检查输入,然后检查换行符.
我在YouTube,这个网站和很多其他网站上都看过这个.
我有一个2D游戏的开始 - 玩家可以使用箭头键在屏幕上驱动三角形.
问题在于,有时三角形将在一个方向上旋转或向前移动,直到再次按下相应的控制键并再次触发onkeyup事件.这通常发生在同时按下多个控制键的情况下.
我无法理解为什么它会被困在第一位,除非onkeyup事件因某些原因没有被解雇.非常感谢任何帮助,谢谢.
这里有一些代码,你可以在JSFiddle上找到一个完整的例子:
...
function init(){
var canvas = document.getElementById('canvas');
if(canvas.getContext){
setInterval(play, 50);
}
}
function play(){
printTriState();
updateTriAcceleration();
applyTriVelocity();
updateTriRotation();
draw();
}
document.onkeydown = function(event){
if(!event.keyCode){
keycode = window.event.keyCode;
} else {
keycode = event.keyCode;
}
console.log(event.keyCode);
switch(keycode){
//left
case 37:
tri.rotation = -1;
break;
//up
case 38:
tri.throttle = true;
break;
//right
case 39:
tri.rotation = 1;
break;
//down
case 40:
tri.currentSpeed = 0;
break;
default:
break;
}
};
document.onkeyup = …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的 HTML 输入/输出结构:
<textarea id="input" onkeyup="sendCode()">
Hello World!
</textarea>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)
我有 JS 函数,它应该传递从输入到输出的所有内容:
var input = document.getElementById("input");
var output = document.getElementById("output");
function sendCode(){
output.innerHTML = input.innerHTML;
}
Run Code Online (Sandbox Code Playgroud)
当我手动调用该函数时,该sendCode()函数可以工作,但似乎该onkeyup事件未在此文本区域中触发。
这是jsfiddle: http: //jsfiddle.net/mudroljub/y5a2n8ab/
有什么帮助吗?
更新:jsfiddle 已更新并正在运行。