Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使文本输入始终自动完成_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何使文本输入始终自动完成

Javascript 如何使文本输入始终自动完成,javascript,jquery,html,css,Javascript,Jquery,Html,Css,似乎一些文本输入立即给了我一种“下拉列表”,上面有我过去填写的值。其他时候不是。有没有办法在输入框中“鼓励”这种行为?为什么有时会发生,有时不会?我是否需要为重复用户提供cookie或其他设备,以确保他们具有此功能,或者是否有一些jquery选项?(因为我已经在使用它)。这是一个依赖于浏览器的功能。浏览器可能会查看文本输入字段的ID和/或名称,并保存您输入的值 由于您访问的网站上使用的输入字段的ID/名称,它可能会有点参差不齐。浏览器会根据输入类型和名称为您提供过去填写的值 因此,当有人在exa

似乎一些文本输入立即给了我一种“下拉列表”,上面有我过去填写的值。其他时候不是。有没有办法在输入框中“鼓励”这种行为?为什么有时会发生,有时不会?我是否需要为重复用户提供cookie或其他设备,以确保他们具有此功能,或者是否有一些jquery选项?(因为我已经在使用它)。

这是一个依赖于浏览器的功能。浏览器可能会查看文本输入字段的ID和/或名称,并保存您输入的值


由于您访问的网站上使用的输入字段的ID/名称,它可能会有点参差不齐。

浏览器会根据输入类型和名称为您提供过去填写的值

因此,当有人在examplea.com中使用名为“login”的输入对表单进行编码时,当您在exampleb.com上使用名为“login”的输入时,浏览器将检测到这一点,并且您之前已经为名为“login”的输入填写了一些信息,并向您显示一些选项

这就是浏览器的行为


对于jQuery选项,您可以在

处使用jQuery UI的自动完成。如果要为页面上的每个输入字段提供特定的下拉列表值。然后,使用一点javascript、Google闭包编译器和为浏览器创建收藏夹/书签的知识,您可以在任何网页上添加类似的内容

下面是我的示例代码

HTML

现在使用,您只需将选项设置为“simple”,就可以去掉所有空白,并将内容缩短为一行文本,最终得到这个结果

(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:
在该行前面加上前缀,并将其另存为收藏夹/书签,这样您就创建了一个新的书签

试试看。点击你最喜欢的/书签,然后双击搜索框,瞧


您甚至可以使用jquery创建bookmarklet,jqueryui意味着您可以使用它们的自动完成功能。

您看到的是一个浏览器功能。如果您想要自己的,请使用自动完成插件,如。我完全猜得到,但我认为大多数浏览器实际上都在使用“name”或“id”属性来自动完成用户输入。@RobertHarvey谢谢!我可能可以用cookie自己制作类似的东西,但是有没有现成的插件可以让列表在不使用数据库的情况下从用户特定的数据填充?浏览器在实际提交表单时会记住这些信息。基于Ajax的表单因此而出现问题。您看到datalist元素了吗?查看我的JSBIN。为什么它适用于我从amtrak.com网站获取的信息,而不适用于我从amazon.com网站获取的信息?我真的不明白这有什么用。我必须“预先”列出一个要自动填充的单词列表?这是一个简单的例子,稍微跳出这个框思考一下,一个更复杂的例子是代码还将监视页面上的输入,并将您键入的信息存储到本地存储中,然后当您再次访问该页面时,这不是跨域的,它将使用保存的数据来提供自动完成程序。是的,您必须自己编写一些代码,我还没有在野外看到任何东西,但这并不难,然后您可以使用类似于我演示的、jquery autocomplete或YUI autocomplete的东西。这是你问题的一个合理的解决方案。也许我有点匆忙。只要稍加努力,它就会非常有用。投票吧!还有我的道歉!等我有空的时候,我会更深入地看一看。谢谢:)
(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);
        }
    });
}());
(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)})})();