输入搜索的重置选项是否有可用的事件?
在HTML5中有一个新的输入类型,’搜索’。 在大多数浏览器上,它仅仅是一个简单的“文本”输入,但对于基于webkit的浏览器,它会添加一点交叉来重置输入。
我希望能够处理这个问题,有没有这样的事件?
不,这是不可能的。 这种UI交互是webkit实现的一些优点,但实际上并未进行规范。 看到这里 。 所以,即使有可能 – 你也不能指望这个UI在Gecko中实现,例如,当他们添加type = search时。
本页: http : //css-tricks.com/webkit-html5-search-inputs/提到Ajaxian的评论:
还有一些自定义事件 – 例如“搜索”在用户暂停键入时触发(将’incremental’设置为true)。
在测试时,我发现当输入被清除时(至少在最新版本的Safari中)也会调用此“搜索”事件。
似乎miketaylr是正确的,不可能抓住这个事件。 请参阅此问题的答案: 如何检测“搜索”HTML5输入的清除?
为了符合标准并且不依赖于一个布局引擎的一个function,我建议您在onChange
事件上运行代码,如果新文本值为空。
您也可以监听“输入”事件,这比“搜索”事件更通用,但仍然可以捕获重置选项。
我不知道这是正确的答案,但是当用户使用X按钮清除输入时,会调用click
事件处理程序。
$('input[type="search"]').click(function(event) { // This code runs anytime a user clicks on the input, // including when they clear it using the X button. })
我不确定,如果还有人正在寻找解决方案。 但是下面的代码片段/技巧对我有用。 CSS完成隐藏clear(X)图标 ,如果你不想隐藏clear(X)图标但需要处理,那么JS代码片段会有所帮助。
CSS技巧:
#textFieldId::-ms-clear {display: none;}
– 对于特定的文本字段
要么
input[type=text]::-ms-clear { display: none; }
input[type=text]::-ms-clear { display: none; }
– 适用于范围内的所有文本字段
要么
JavaScript技巧(将文本字段值重置为空/空白并触发html事件KeyUp。因此您可以根据需要进行更改)
$('#textFieldId').bind("mouseup", function() { var $input = $(this); var oldValue = $input.val(); if (oldValue == "") { return; } setTimeout(function() { var newValue = $input.val(); if (newValue == "") { $input.trigger("keyup"); } }, 1); });
您可以添加一个条件来检查搜索字段的内容是否为空,但即使超时也不好,因为它先运行代码然后清除该框。 另一个问题是,在编辑字段时,代码不会对关闭按钮作出反应
试试这个希望帮助你
$("input[name=search-mini]").on("search", function() { //do something });