关键字上的Jquery一次

时间:2017-06-21 02:57:47

标签: javascript jquery html

下次输入一些文字时如何触发另一个警报? 例如:
1.放一些文字
2.警报触发
3.再放一些文字
4.再次发出警报触发器

编辑:我不想每次输入都保持触发警报,我想做的是......让我说我键入“abcd”,该功能应该只触发一次。然后我点击屏幕上的任何地方。之后,我再次在文本框中键入“dddd”,该函数再次触发一次

编辑2:Sry伙计们,也许我的要求有点令人困惑,我只是编辑代码并重新解释以说明我的真实案例。所以,首先,我键入文本框中的“abcd”,工具提示应该在第一个字母“a”上触发一次。然后我点击屏幕的任意位置,工具提示消失。接下来,我再次键入“gfffee”,工具提示应该再次出现在“g”的第一个字母上。

Optional<T>

解答:
谢谢大家帮助我,我根据每个人的答案组合解决了这个问题。

<input type="text" id="test">
<input type="button" id="tool">


$('#test').one("keyup", function(){ 
    $('#tool').tooltip("show");
});

$('#tool').tooltip({
        placement: "bottom",
        trigger: "focus",
        title: "Click here",
    });

4 个答案:

答案 0 :(得分:0)

输入

然后使用clearTimeout(userTimer);清除计时器,然后使用setTimeout(doneType, maxTimer*1000);启动新计时器,如果超时调用函数doneType

,则maxTimer以你选择的秒为单位(此处为2s)

var userTimer;
var maxTimer = 2;

//on input, clear the timer and start new timer
$('#test').on('input', function () {
  clearTimeout(userTimer);
  userTimer = setTimeout(doneType, maxTimer*1000);
});

function doneType() {
  alert('keep type?');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" id="test">

答案 1 :(得分:0)

我认为只使用keyup事件,没有确定的方法来确定何时完成输入。但你可以尝试去抖动。我已添加underscore.js以使用debouce,但您可以随意使用自己的实现或其他库。来自下划线的辩论文件

  

用于实现仅在输入停止后才会发生的行为

您可以利用等待时间来满足您的需求。我已经做到了500毫秒

$('#test').on("keyup", _.debounce(function() {
  alert("test");
}, 500));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

<input type="text" id="test">

去抖动here

的绝佳解释

替代解决方案

另一种可能的解决方案是附加一个blur处理程序,如果在input

之外点击该处理程序将会执行

$("#test").on("blur", function(e) {
  alert("Test")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input type="text" id="test">

答案 2 :(得分:0)

你不能只使用onchange功能吗?从您的编辑看来,这似乎更适合您的用例。

所以

$('#test').on("change", function(){ 
    alert("test");
});

答案 3 :(得分:0)

试试这个

var triggered = 0; // or false

$('#test').on('input', function() {
    if(triggered == 0) {
        alert('whatever message here');
        triggered++;
    }
});

$('#test').on('blur', function() {
    // reset the triggered value to 0
    triggered = 0;
});