2

好的,所以我试图实现类似控制台的行为,我需要暂停执行,直到调度某个事件,我真正需要的是:

var evt = $("element").waitForKeyDown();

这个假设的函数应该暂停执行,直到用户按下“元素”元素上的一个键,该元素被认为是一个文本字段。然后,当用户按下该文本字段上的任何键时,应继续执行,并且 evt 应包含与该事件相关的信息。

这可以在javascript中实现吗?或类似的亲密行为。

4

4 回答 4

6

你永远不想在 JavaScript 中等待——只有一个线程,你需要它来处理可能进入页面其他部分的其他事件。

相反,您想要做的是将在您想要等待的那一点之后应该发生的所有事情都打包成一个function(){}. (这个函数被称为“延续”,你会在 JavaScript 和其他高度异步的环境中到处遇到这种模式。)

从那里,您将使用以下 jQuery 注册新函数:

var evt = $("element").keydown(function(event){
   var keypressed = event.keyCode;

   // do whatever you'd like with the keypress.
});

您可以考虑使用keypress而不是 keydown,但是 keypress(几乎是自相矛盾的)不会让您获得所有的按键,只是那些变成某种文本输入的按键。

于 2012-04-08T18:30:14.320 回答
1

恐怕javascript中没有阻止操作,除了警报和提示。这样做的唯一方法是(虽然可能是错误的):

var evt = $("element").on("click",function(){
  //Continue here
});
于 2012-04-08T18:23:23.623 回答
0

Use jQuery .keyDown http://api.jquery.com/keydown/

var evt = $("element").keyDown(function(){
  //Rest of your code
});
于 2012-04-08T18:31:29.640 回答
0

只需使用 keydown 事件。它完全符合您的要求:仅在按下某个键时才执行操作。

于 2012-04-08T18:29:39.130 回答