一部のテキスト入力では、過去に入力した値を含む一種の「ドロップダウン」がすぐに表示されるようです。それ以外の場合はありません。入力ボックスでこの動作を「奨励」する方法はありますか? これが起こるときと起こらないときがあるのはなぜですか?この機能を確実に利用できるようにするために、リピーター ユーザーに Cookie やその他のデバイスを提供する必要がありますか、それとも jquery オプションはありますか? (私はすでにそれを使用しているため)。
質問する
103 次
3 に答える
1
ここにアイデアがあります。ページの各入力フィールドにプルダウン値の特定のリストが必要な場合。次に、少しの JavaScript、Google クロージャ コンパイラ、およびブラウザのお気に入り/ブックマークを作成する知識があれば、任意の Web ページに同様のものを追加できます。
これが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 のクロージャ コンパイラを使用すると、オプションを「シンプル」に設定するだけで、すべての空白を取り除き、1 行のテキストに短縮できます。
(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のブックマークレットが作成されます。
試してごらん。SO でお気に入り/ブックマークをクリックしてから、検索ボックスをダブルクリックしてください。
jquery と jqueryui を使用してブックマークレットを作成することもできます。これは、オートコンプリートを使用できることを意味します。
于 2013-04-29T18:52:32.630 に答える