キーボードのナビゲーションにこのスクリプト機能を使用できない理由を完全に理解しようと3日間を要しています。オートコンプリート()選択可能Li
検索、表示、置換が正常に機能していますが、リストを参照してEnterキーを押して1つのオプションを選択しようとすると、表示されません。
フォーム
<form action="/busqueda.php" method="get" autocomplete="off">
<input name="dataa" class="boxbuscar" type="text" id="despliega" onKeyUp="autocomplet()">
<input src="/img/btn-buscar.png" type="image" class="lupa">
<ul id="lista"></ul>
PHP
<?php
function connect()
{
return new PDO('mysql:host=localhost;dbname=dbname', 'dbuser', 'dbuserpw', array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
}
$pdo = connect();
$keyword = '%' . $_POST['keyword'] . '%';
$sql = "SELECT * FROM tbl_productos WHERE nombre LIKE (:keyword) ORDER BY nombre ASC LIMIT 0, 15";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, DO ::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach($list as $rs)
{
// put in bold the written text
$reemplazador = str_replace($_POST['keyword'], '<b>' . $_POST['keyword'] . '</b>', $rs['nombre']);
// add new option
echo '<li onclick="set_item(\'' . str_replace("'", "\'", $rs['nombre']) . '\')">' . $reemplazador . '</li>';
}
?>
とJS
function autocomplet() {
var min_length = 2; // min caracters to display the autocomplete
var keyword = $('#despliega').val();
if (keyword.length >= min_length) {
$.ajax({
url: 'ajax_refresh.php',
type: 'POST',
data: {
keyword: keyword
},
success: function(data) {
$('#lista').show();
$('#lista').html(data);
}
});
} else {
$('#lista').hide();
}
}
// set_item : this function will be executed when we select an item function set_item(item) {
// change input value
$('#despliega').val(item);
// hide proposition list
$('#lista').hide();
}
任意のアイデア?
更新: 短い答え:これはa link
JSコードで関数set_item(item)がコメントアウトされているようです。それが理由だろうか? – jetpackpony
また、適切なインデントでコードを適切にフォーマットしてください。そうすれば、読みやすくなります。 – jetpackpony
インデントされました。 –