javascript - 使用 JQuery 粘贴事件后将焦点更改为下一个输入

标签 javascript jquery html keyboard-events jquery-events

我有一个带有许多输入框的 HTML 表单。在任何输入框的粘贴事件中,我想将焦点设置在以下输入框上。 这是我当前使用的代码:

$("input").bind('paste', function(e) {
      var inputs = $(this).closest('form').find(':input');
      //alert(e.originalEvent.clipboardData.getData('Text'));
      inputs.eq( inputs.index(this)+ 1 ).focus();      
      });

此代码会发生以下情况。假设我有输入框“A”和“B”。我将文本粘贴到“A”中;该函数将焦点更改为“B”,然后将文本保存到“B”中。 “A”中没有粘贴任何内容。

我当然希望将内容粘贴到“A”中,然后焦点切换到“B”。

有没有办法获得后一种行为?

最佳答案

您希望在更改焦点之前触发粘贴事件,因此您需要在调用焦点之前完成 bind 回调。

你应该做的是推迟你的焦点通话。您可以使用 setTimeout 并延迟 0 毫秒 - 基本上,在粘贴函数结束后调用。

$("input").bind('paste', function(e) {
    var inputs = $(this).closest('form').find(':input');
    var self = this;
    setTimeout(function(){
        inputs.eq( inputs.index(self)+ 1 ).focus();      
    }, 0)
});

http://jsfiddle.net/6utcnaq3/1/

关于javascript - 使用 JQuery 粘贴事件后将焦点更改为下一个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763391/

相关文章:

javascript - 在 onchange 和通过文本框将数字存储在数组中时遇到问题

javascript - 处理完成后如何使用异步nodejs中的回调清除数组?

javascript - 无法使用 javascript 获取 HTML4 中的 HTML5 视频 id?

javascript - querySelectorAll 不是函数

javascript - 单击按钮时获取按钮上标签的值

javascript - 将自定义域与 Firebase 动态链接结合使用

javascript - 在 TH 中按类排序表

jQuery 看不到上下文

javascript - 如何在将鼠标悬停在不同元素上时激活和停用元素的 css 类?

javascript - 渲染大表的性能问题