我想模拟用户按Tab键,然后在按Enter键时输入。我知道这听起来很糟糕,但是我有一个asp.net Web应用程序,它只允许我有一个带有runat =“server”的表单,所以当用户点击返回时,主表单会被提交。我在页面上有另一个文本框(理想情况下应该有它自己的形式,但不能因为它是asp),并且当从那里击中输入时,显然主要表单已提交。我能想到的最简单的方法是模拟制表符然后使用javascript输入,但我没有成功。我欢迎任何其他解决这个问题的方法。到目前为止,我已经模拟了按Tab键,但我不知道如何模拟多个按键。
这是我到目前为止的代码,我想回到9;需要用其他东西替换。 JQuery也会这样做。
function suppressEnter (e) {
var keyPressed;
if (window.event) { keyPressed = window.event.keyCode } // IE
else if (e) { keyPressed = e.which }; // Netscape
if (keyPressed == 13) {
return 9;
}
else {
return true;
}
}
编辑:返回9 + 13;适用于chrome,但不适用于IE
答案 0 :(得分:0)
这样的事情会起作用:
function keyPress(e) {
if (e.which == 13) {
$(document).trigger(jQuery.Event('keydown', {which: 9}));
// do something
alert('Enter')
}
if (e.which == 9) {
// do something
alert('Tab');
}
};
$(document).bind("keydown", keyPress);
我已经用小提琴编码 - http://jsfiddle.net/FAe6U/
关于@nnnnnn评论:
在我看来,你应该直接编码,而不是尝试 模拟按键。
试试这个:
var tabPress;
function keyPress(e) {
if (e.which == 13) {
if (tabPress == 1){
e.preventDefault();
alert('tab and enter');
}
else{e.preventDefault(); alert('enter')}
}
else if (e.which == 9) {
e.preventDefault();
tabPress = 1;
};
};
function keyRelease(){tabPress = 0;}
$(document).bind("keydown", keyPress);
$(document).bind("keyup", keyRelease);
我已经用小提琴编码 - http://jsfiddle.net/f4Ybn/