如何添加一个 EventListener 来监听除特定元素之外的 window 上的每次点击
How to add an EventListener that listens every click on window besides a specific element
我有一个简单的 html 文件,它只有一个输入字段:
<input value="Hello">
我想要的是当用户单击输入字段时,he/she 将能够编辑文本,然后一旦完成编辑并单击 其他地方(不在文本字段内)在 window 中,用户将收到有关新输入的警报。
我的JS代码是:
$('document').ready(function(){
$($('input')[0]).click(function() {
alert('OK1');
$(this).addClass('input-edit');
$($(window)[0]).click(function() {
alert('OK2');
var text = $('input').value;
alert(text);
});
$($('input')[0]).click(function(e) {
e.stopPropagation();
return false;
});
})
})
但是,当我 运行 代码时,我看到当我第一次在文本字段中单击时,代码的行为就像它自动获得了两次点击,所以我收到了 3 个警报:
OK1 OK2 undefined
您知道我可以做些什么来确保第二次点击的行为符合我的预期吗?
我认为您错过了模糊事件。元素失去焦点(在本例中为光标)的事件称为 blur
事件。您只需要添加一个事件处理程序来模糊输入元素的事件。尝试
$('input').blur(function(e) {
alert($(this).val());
}
由于您只有一个输入元素,因此不需要获取索引为 0 的元素。
提供目标和 id 或我在下面所做的任何事情,然后尝试模糊事件。此外,这里是工作 JSFiddle https://jsfiddle.net/wr1ncvbn/
<input type="text"/ id="target">
$('#target').blur(function() {
alert($(this).val());
});
我有一个简单的 html 文件,它只有一个输入字段:
<input value="Hello">
我想要的是当用户单击输入字段时,he/she 将能够编辑文本,然后一旦完成编辑并单击 其他地方(不在文本字段内)在 window 中,用户将收到有关新输入的警报。
我的JS代码是:
$('document').ready(function(){
$($('input')[0]).click(function() {
alert('OK1');
$(this).addClass('input-edit');
$($(window)[0]).click(function() {
alert('OK2');
var text = $('input').value;
alert(text);
});
$($('input')[0]).click(function(e) {
e.stopPropagation();
return false;
});
})
})
但是,当我 运行 代码时,我看到当我第一次在文本字段中单击时,代码的行为就像它自动获得了两次点击,所以我收到了 3 个警报:
OK1 OK2 undefined
您知道我可以做些什么来确保第二次点击的行为符合我的预期吗?
我认为您错过了模糊事件。元素失去焦点(在本例中为光标)的事件称为 blur
事件。您只需要添加一个事件处理程序来模糊输入元素的事件。尝试
$('input').blur(function(e) {
alert($(this).val());
}
由于您只有一个输入元素,因此不需要获取索引为 0 的元素。
提供目标和 id 或我在下面所做的任何事情,然后尝试模糊事件。此外,这里是工作 JSFiddle https://jsfiddle.net/wr1ncvbn/
<input type="text"/ id="target">
$('#target').blur(function() {
alert($(this).val());
});