从文本字段捕获数据时如何忽略自动完成值?
Posted
技术标签:
【中文标题】从文本字段捕获数据时如何忽略自动完成值?【英文标题】:How do I ignore auto complete values when capturing data from a text field? 【发布时间】:2013-06-28 17:28:56 【问题描述】:我最近在我的网站中实现了一个搜索框,它通过自动完成关键字提供了很好的结果。我想实现一个隐藏部分,以了解我的注册访问者搜索的搜索查询是什么。
我在搜索框中添加了一个隐藏的用户名,当用户搜索任何内容时,名称和搜索查询都会保存在另一个表中。由于自动完成,数据每秒保存一次;因此,如果有人搜索“笔记本电脑”,我们会得到:
**ID username Searchdata srtime**
1 user1234 L 1372513199
2 user1234 La 1372513200
3 user1234 Lap 1372513201
4 user1234 Lapt 1372513202
5 user1234 Lapto 1372513203
6 user1234 Laptop 1372513204
jQuery 代码:
$('#search_box').keyup(function()
// Other things
);
如何只保存最终搜索词而忽略自动完成值?
【问题讨论】:
我会在每个键位上设置一个超时时间(比如说 3-5 秒),超时时间应该在每个键位上重置。那么你只会在没有输入的 3-5 秒后保存。 (我会使用 5-10 来保存搜索查询,而 3 用于实际搜索) @x4rf41 这是一个糟糕的解决方案。 在服务器端做这个怎么样?假设您从自己的来源中提取数据.. 旁注:你真的需要每次都发送用户名吗,如果他们登录了你就不能访问吗? 好的.....我只是检查丹尼的答案,但没有解决,,,, 【参考方案1】:您应该使用.blur()
而不是.keyup()
。
这样,数据在控件失去焦点时提交,而不是每次按下键时提交。
【讨论】:
这是不可能的,除非您使用尚未发布的代码提交数据。数据是否使用$('#search_box').keyup(function()
提交?
您仍然可以使用keyup进行搜索,但此时不要保存,然后保存onBlur。【参考方案2】:
只需按照以下步骤操作即可。
-
在隐藏字段中保存数据
更新 keyup 上的隐藏字段。
当用户从搜索字段中移出焦点时保存查询。
javascript 代码
$('#search').keyup(function() $('#searchQuery').val($('#search').val()); );
$('#search').focusout(function()
alert($('#searchQuery').val()); //this will return final query
);
html代码
<input type="text" id="search">
<input type="hidden" id="searchQuery">
【讨论】:
以上是关于从文本字段捕获数据时如何忽略自动完成值?的主要内容,如果未能解决你的问题,请参考以下文章
从自动完成下拉列表中未选择任何选项时如何清除 mat- 自动完成