停止输入时如何触发通话

时间:2019-03-15 11:16:40

标签: javascript

<input autocomplete="off" [config]="config2"   [items]="items2" (inputChangedEvent)="onInputChangedEvent($event)"   (selectEvent)="onSelect($event)">`enter code here`


onInputChangedEvent(val: string) {
        this.changeEvent.emit(val);
        this.inputChanged = val;
        if (this.timer) {
            clearTimeout(this.timer);
        }

        // trigger the search action after 400 millis
        this.timer = setTimeout(this.searchFunction(val), 200);
}

我正在使用 InputChangedEvent ,我们如何延迟事件

2 个答案:

答案 0 :(得分:1)

您不能将带有参数的函数传递给Dialog MessageBox,需要创建另一个函数,在其中调用该函数:

setTimeout()

通过将函数直接传递给setTimeout,JavaScript执行函数并将返回值用作回调。因此,您的var _this = this; setTimeout(function () { _this.searchFunction(val); }, 200); 每次都会执行。

答案 1 :(得分:0)

您是否要问仅在400毫秒内没有键入内容时才触发操作?

如果是这样,通常的方法是“死人的开关”(我相信是从火车上的旧安全装置借来的名称)。

基本思想是,每次看到按键时,您都将杀死现有的计时器(如果有),并启动一个400毫秒的计时器。

然后,如果计时器最终触发,您就知道已经过了400毫秒而没有击键,您就可以执行操作。