看起来好像一些文本输入立即给了我一个“下拉列表”,它带有我过去填写的值。其他时间没有。有没有办法我可以“鼓励”这种行为在输入框?为什么有时会发生这种情况,有时候不会呢我是否需要为重复用户提供cookie或其他设备以确保他们具有此功能,或者是否存在一些jquery选项? (因为我已经在使用它)。如何使文本输入始终自动完成
回答
这是一个依赖于浏览器的功能。浏览器可能会查看文本输入字段的ID和/或名称并保存您输入的值。
由于您访问的网站上使用的输入字段的ID /名称,它可能是不透明的。
看看我的JSBIN。为什么它会对我从amtrak.com网站上输入的内容起作用,但是对于我从amazon.com网站上输入的内容却不适用? http://jsbin.com/ekeyap/4/edit – 1252748 2013-05-13 23:35:52
浏览器根据输入类型和名称为您提供过去填充的值。
因此,当某人在examplea.com上编写一个名为“login”的输入的表单时,当您继续访问exampleb.com并且还有一个名为“login”的输入时,浏览器会检测到该输入并且您已经有一些info之前填入名为“login”的输入信息并显示一些选项。
这就是浏览器的行为。
对于jQuery的选项,你可以在http://jqueryui.com/autocomplete/
使用jQuery UI的自动完成这是一个想法。如果您想为页面上的每个输入字段具有特定的下拉值列表。然后用一个小小的javascript,google关闭编译器以及为浏览器创建收藏夹/书签的知识,您可以在任何网页上添加类似的东西。
这里是jsfiddle
HTML
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" list="sitelist" />
<datalist id="sitelist">
<option label="Lorem" value="Lorem">
<option label="Ipsum" value="Ipsum">
<option label="Dolor" value="Dolor">
</datalist>
我的示例代码的Javascript
(function() {
var d = "proin vestibulum ipsum vel tortor sollicitudin luctus".split(" "),
l = document.createElement("datalist");
l.id = "myDynamicDatalist";
d.forEach(function (w) {
var o = document.createElement("option");
o.label = w;
o.value = w;
l.appendChild(o);
});
document.body.appendChild(l);
Array.prototype.forEach.call(document.getElementsByTagName("input"), function (e) {
if (e.list === null || e.list === "") {
e.setAttribute("list", l.id);
}
});
}());
现在使用Google's closure compiler,你可以摆脱所有的空白,缩短东西单行通过将该选项设置为“简单”,然后以此结束。
(function(){var b=document.createElement("datalist");b.id="myDynamicDatalist";"proin vestibulum ipsum vel tortor sollicitudin luctus".split(" ").forEach(function(a){var c=document.createElement("option");c.label=a;c.value=a;b.appendChild(c)});document.body.appendChild(b);Array.prototype.forEach.call(document.getElementsByTagName("input"),function(a){(null===a.list||""===a.list)&&a.setAttribute("list",b.id)})})();
现在预先考虑到该行以javascript:
并将其保存到收藏夹/书签和自己创建一个javascript bookmarklet。
给它一个去。在SO上单击您最喜欢的/书签,然后双击搜索框,瞧!!
你甚至可以使用jquery创建bookmarklet,而jqueryui意味着你可以使用自动完成功能。
我真的不明白这是如何有用的。我必须“预设”一个待自动填充的单词列表? – 1252748 2013-05-13 23:42:36
这是一个简单的例子,想想那个盒子的外面,更复杂的例子是代码也会监控页面上的输入,并存储你输入到localStorage的信息,然后当你再次访问该页面时,这是不跨域,它会使用保存的数据来提供自动完成器。是的,你必须自己编写一些代码,我没有看到任何东西,但它并不困难,然后你可以使用像我演示的或jquery自动完成或YUI自动完成之类的东西。这是您的问题的合理解决方案。 – Xotic750 2013-05-14 00:30:18
嗯。也许我有点仓促。通过一点工作,它可能非常有用。有一个upvote!我的歉意!当我有一分钟时,我会深入研究它。谢谢 :) – 1252748 2013-05-14 02:56:14
- 1. 文本框输入的自动完成
- 2. 如何设置崇高文本以始终显示自动完成建议
- 3. Sapui5自动完成输入
- 4. Materializecss自动完成输入
- 5. 使用输入值自动完成文本区域
- 6. 防止输入文本使用jQuery UI自动完成
- 7. 自动完成输入,如果手动
- 8. Firefox自动完成'自动完成'输入'按键触发在文本框上输入
- 9. 如何使用自举输入标签自动完成
- 10. 文本框的自动完成文件夹输入
- 11. jQuery UI自动完成行为。如何搜索输入的自由文本?
- 12. Jquery自动完成 - 自动完成输入
- 13. Mac终端自动完成
- 14. 用自动完成功能相互依赖的输入文本
- 15. JQuery文本输入自动完成数值树
- 16. Jquery自动完成不附加到文本输入框
- 17. jQuery自动完成在输入文本框的背景
- 18. 自动完成输入文本类型错误
- 19. jQuery自动完成不适用于多个文本输入
- 20. jQuery的自动完成手动输入
- 21. 自动完成文本框
- 22. 文本框自动完成
- 23. 自动完成文本框
- 24. 使用IEnumerable值自动完成结果始终为空
- 25. 如何使TagsInput既自动完成和自由文本工作
- 26. 如何“处理”输入文本上的浏览器自动完成?
- 27. 如何在文本输入上方放置自动完成菜单?
- 28. 使用angularJS自动完成文本框
- 29. 自动完成文本框使用jquery
- 30. 如何检查输入的值是否来自自动完成?
你所看到的是一个浏览器功能。如果你想拥有自己的插件,请使用自动完成插件,例如[this one](http://jqueryui.com/autocomplete/)。 – 2013-04-29 17:25:20
总猜测,但我认为大多数浏览器实际上使用“名称”或“ID”属性来自动完成用户输入。 – RelevantUsername 2013-04-29 17:27:25
@RobertHarvey谢谢!我可以自己做一些类似于cookie的工作,但是有没有可用的插件,使用户特定的数据填充列表而不使用数据库? – 1252748 2013-04-29 17:28:10