从文本字段捕获数据时如何忽略自动完成值?

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- 自动完成

使用自动完成功能从 mysql 表中返回用户 ID

有没有办法在用户键入时使用第一个 Google Location 返回值自动填充/文本完成表单字段?

使用带有联系人电话号码的自动完成文本视图

剑道自动完成默认值

如何在 Swift 中创建自动完成文本字段