(jQuery)发生条件时停止功能

时间:2019-02-15 14:01:21

标签: jquery

我有这样的jQuery结构:

$('#telefone').keyup(function (e) {
  if (e.keyCode == 8) {
    console.log('backspace')
    return -1;
  }
}).on("input", function () {
   stuff();
}

我需要这样,因为如果我只是在keyup上进行stuff(),则会出现一些问题,而在使用.on的情况下却确实可以做到。关键是,如果用户按下“退格键”,我希望函数停止,我不想做stuff()。第一个块捕获用户是否按了退格键,并且效果很好,但是如何停止on的运行?

我也试图做类似的事情:

$('#telefone').on("input", function () {
    $('html').keyup(function (e) {
      if (e.keyCode == 8) {
        console.log('backspace')
        return -1;
      }
    })
  stuff()
}

但是它也不起作用。当按下退格键时,该函数可以捕获,但是return不会停止on函数。我该怎么办?

1 个答案:

答案 0 :(得分:2)

只需设置某种标志

var isRunning = true;
$('#telefone').keyup(function (e) {
    if (e.keyCode == 8) {
        isRunning = false;
    }
}).on("input", function () {
    if (isRunning) {
        stuff();
    }
});

如果您需要在用户完成按键操作后重新激活stuff(),请使用keydown事件。

var isRunning = true;
$('#telefone').keydown(function (e) {
    if (e.keyCode == 8) {
        isRunning = false;
    }
}).keyup(function (e) {
    isRunning = true;
}).on("input", function () {
    if (isRunning) {
        stuff();
    }
});

顺便说一句,您可以在单个.on()调用中完成所有操作。

var isRunning = true;
$('#telefone').on({
    keydown: function (e) {
        if (e.keyCode == 8) {
            isRunning = false;
        }
    },
    keyup: function (e) {
        isRunning = true;
    },
    input: function () {
        if (isRunning) {
            stuff();
        }
    }
});