Javascript 当用户通过webkit cancel按钮取消输入时,会触发什么事件?

Javascript 当用户通过webkit cancel按钮取消输入时,会触发什么事件?,javascript,jquery,html,Javascript,Jquery,Html,一些浏览器(如Chrome)在输入时使用type=“search”提供额外的搜索取消按钮,如下图所示 通常带有附加检查的keyup足以测试用户是否删除了输入字符串(不考虑右键单击)。但是,如果用户通过webkit浏览器提供的特殊取消按钮取消输入,则不会触发keyup或change 那些取消按钮有什么特别的活动吗?或者我必须检查一个已经存在的事件,如单击 捕获“更改”事件,而不是“键控”事件。当文本字段的值更改时,将触发此命令,您可以检查该值是否为空 $('input[type="search"]

一些浏览器(如Chrome)在输入时使用
type=“search”
提供额外的搜索取消按钮,如下图所示

通常带有附加检查的
keyup
足以测试用户是否删除了输入字符串(不考虑右键单击)。但是,如果用户通过webkit浏览器提供的特殊取消按钮取消输入,则不会触发
keyup
change

那些取消按钮有什么特别的活动吗?或者我必须检查一个已经存在的事件,如
单击


捕获“更改”事件,而不是“键控”事件。当文本字段的值更改时,将触发此命令,您可以检查该值是否为空

$('input[type="search"]').on('change', function() {
    if ($(this).val() == "") {
        alert('clear');
    }
});

听点击事件似乎在我的小提琴中起作用:

HTML


起初,当OP没有明显想到
(我真傻,没有读到他的心思)时,我认为这可能是答案

我猜“x”不是输入字段的标准部分(HTML5与否)

这可能是一些外部添加的站点元素,这就是为什么您可能对以下答案感兴趣:

编辑:

<input type="search" name="search" id="search" placeholder="Search..." />
$('#search').on('search', function(e) {
    if('' == this.value) {
        alert("You either clicked the X or you searched for nothing.");
    }
});

经过研究,我发现在Chrome上点击
x
会触发
click
事件。同样,此类似线程中的答案是:建议同时触发
搜索
事件。

此事件有一个事件:

在通过用户更改元素的文本内容时发生 接口

如果要检测 文本区域,输入:文本,输入:密码或输入:搜索元素 已更改,因为当 元素失去焦点,而不是在修改后立即

下面是一个工作示例

$('search')。在('input',函数(e)上{
如果(''==此.value){
警报('请输入搜索条件!');
}
});

这里是oninput的替代方案,它将在聚焦时监控字段


此存在一个事件:

调用onsearch事件的操作:

按ENTER键或单击搜索控件中的“删除搜索文本”按钮

以下是一个例子:

HTML:

<input type="search" name="search" id="search" placeholder="Search..." />
$('#search').on('search', function(e) {
    if('' == this.value) {
        alert("You either clicked the X or you searched for nothing.");
    }
});

您可以使用bind捕获多个事件,如中所示

基于的:



onChange仅在输入字段模糊时触发。这不会检测到
keyup
上的更改,也不会检测到用户单击“x”图标清除字段时的更改。Chrome似乎在html5搜索字段中添加了这个图标。@Zenph如果你想让人们帮助你,也许你应该提供一些示例代码,说明“keyup”不起作用,以及神奇的“x”在哪里显示。大多数人都不知道你在这里说什么。即使是
$('input[type=“text”])。在('change',
上与
$('input[type=“text”])相同.change
@RobinvanBaalen我担心人们已经阅读了这个问题,清楚地看到我提到html5输入和这个“x”图标,并且不知道我在说什么!几乎!谢谢。当用户第一次单击输入时,输入已经是空的,怎么样?然后,你有一个空字段,因此错误显示。这很有道理,对吗?@Zenph在数据中存储一个
dirty
标志。如果我想触发每次点击,那么是的,这是非常有意义的。但我不;)澄清一下——我正在清除搜索字段,并清除ajax过滤器。这将在初次单击字段时执行ajax查询。@DipeshParmar您可以在一个
.on()
侦听器中混合和匹配任意数量的事件。但为了可读性,建议您只将有意义的事件组合在一起。在事件处理程序中,您可以执行一个
事件。键入
以获取触发的实际事件。恐怕这至少是Chrome的标准。也许您应该在猜测之前阅读HTML5表单元素。在基于Webkit的浏览器中,X是HTML5搜索类型字段的一部分。可能会提供代码,这样很明显,您询问的是
而不是
,想要帮助您的人不必猜测?-\u-'我想没有人会读到关于搜索的
onsearch
事件,因为这是一个向下的投票,它的结果几乎与所选的答案相同。我总是忘记这一个。。。我相信它也可以用于从手持式扫描仪粘贴内容。我删除了以前所有的评论,因为它们基本上都是粗鲁的/没有建设性的,或者,现在帖子已经编辑过,过时了。没问题,谢谢Chris。对我来说,
单击“删除搜索文本”按钮会触发“搜索”事件似乎有些奇怪。他们为什么要这样做?@RobinvanBaalen允许开发者处理空输入,并让你完全控制决定“搜索”事件是什么?这在webkit中绝对有效,因此这是一个合适的答案;但是,它在ie10中不起作用+
$('#search').on('search', function(e) {
    if('' == this.value) {
        alert("You either clicked the X or you searched for nothing.");
    }
});
$('#search').bind("change keyup input", function(e) {
    if('' == this.value) {
        alert('Please enter a search criteria!');
    }
});