在JavaScript中粘贴文本事件的情况下,如何停止触发输入文本事件处理程序?

时间:2018-08-17 08:51:46

标签: javascript jquery events

在我的示例中,我想要两个单独的事件处理程序,用于键入数据和粘贴数据。我面临的问题是,粘贴val newRDD: RDD[(Int, (Int, Int))] = rdd1 .flatMap { case (k, values) => values.map(v => (k, v))} 事件处理程序的每个数据也会触发。如何停止?

代码:

keyup
$(".inp-txt").on('keyup', function() {
  console.log("Handler for on keyup is called");
});

$(".inp-txt").on('paste', function() {
  console.log("Handler for on paste is called.");
});

能否请您使用香草JavaScript和jQuery提供解决方案?

2 个答案:

答案 0 :(得分:1)

这可能对您有用。

=$B1="error" 

答案 1 :(得分:1)

在甚至Keyup处理程序中,您可以检查键代码并确定它是否适用于ctrl + v,然后跳过内部代码执行,它将仅执行粘贴事件代码。这是可以解决的,因为我们不能只绑定过去的事件,而不能绑定键。

注意:我已经设置逻辑来检查是否在v之前按下了控制键,但是如果用户先按下Control键然后放下主意以粘贴并尝试按下v,则此操作将无效。

var isCtrl = false;
$(".inp-txt").bind('keyup', function(e) {
    //console.log(e.keyCode);
    //console.log(e.ctrlKey);
    if (e.ctrlKey) {
       isCtrl = true;
    } else if(isCtrl && e.keyCode == 17) {
        isCtrl = false;
    } else {
       isCtrl = false;
       console.log("Handler for keyup bind is called");
     }
});

$(".inp-txt").bind('paste', function() {
  console.log("Handler for paste bind is called.");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="inp-txt">