5

我在我工作的网站上有一个搜索框,我想跟踪人们正在寻找的搜索词。

由于搜索框会自动猜测某人正在输入的内容并进行搜索,因此没有点击事件。

在控制台中,当模糊发生时我想要的 textContent 是 .textContent :

myVar = document.querySelectorAll('.twitter-typeahead > span')[2]

但是这里返回的值只有在有人实际输入内容时才不是 null。所以附加一个模糊事件似乎是要走的路。在另一个论坛上有人帮助的背景下,我在控制台中走了这么远:

myVar.addEventListener('blur', function(){dataLayer.push({'event':'bla'})})

在控制台中输入所有内容后,我没有看到任何值被推送到 dataLayer,这让我认为 blur 事件不起作用(与 dataLayer.push 函数相反。)

带有相关搜索框的页面在此处

我如何将模糊事件附加到不关注搜索框的人身上?

4

2 回答 2

9

您应该将blur侦听器添加到搜索框,而不是跨度:

searchbox = document.getElementById('searchboxID');
searchbox.addEventListener('blur', function() {
    var input = this.value;
    // Do whatever you want with the input
});
于 2014-08-12T18:24:56.227 回答
1

ES6 提供了更短的可能性:

let el = document.getElementById('id');
el.addEventListener('blur', () => console.log('blurred'));

或者,如果您需要该元素:

let el = document.getElementById('id');
el.addEventListener('blur', (event) => console.log(event.target));

片段:

let el = document.getElementById('id');
el.addEventListener('blur', (event) => console.log(`${event.target}: ${event.target.value}`));
<input id="id" />

于 2019-05-03T13:03:51.883 回答