私は自分で解決できない問題があります。私は入力中に結果を示唆するajaxで検索入力を行いました。スクリプトはFirefoxで正常に動作しますが、クロムで使用すると入力中に入力フィールドのフォーカスが失われます。入力中に入力フィールドのフォーカスが失われています(AJAX Search)
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Please update your Browser");
}
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str = encodeURI(document.getElementById('campo-search-
modal
').value);
searchReq.open("GET", 'https://mywebsite.com/search.php?search=' + str, true);
searchReq.onreadystatechange = handleSearchSuggest;
searchReq.send(null);
}
}
//Called when the AJAX response is returned.
function handleSearchSuggest() {
if (searchReq.readyState == 4) {
var ss = document.getElementById('cont-list-re-search')
ss.innerHTML = '';
if (document.getElementById('campo-search-modal').value.length > 2) {
var str = searchReq.responseText.split("\n");
for (i = 0; i < str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<li ';
suggest += 'class="suggest_link">' + str[i] + '</li>';
ss.innerHTML += suggest;
}
}
else {
ss.innerHTML = 'Perfavore inserire almeno 3 caratteri!';
}
}
}
//Mouse over function
function suggestOver(div_value) {
div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
document.getElementById('campo-search-modal').value = value;
document.getElementById('cont-list-re-search').innerHTML = '';
}
HTMLコード:ここで
は、コードで入力内部<form>
<div class="form-group row row-camp-search">
<div class="col-5">
<input class="form-control modal-search" type="search" id="campo-search-
modal" placeholder="Ricerca Nel Sito..." onKeyUp="searchSuggest();">
</div>
</div>
</form>
<div id="result-search">
<ul id="cont-list-re-search">
</ul>
使用タイプ、およびAJAX呼び出しが行われます。私はPHPの検索ページを含めていませんでした。なぜなら、データベースへのクエリと結果を出力するサークルだけがあるからです。
奇妙なことに、このスクリプトはFirefoxでうまく動作しますが、Google Chromeで使用すると入力フィールドのフォーカスが失われます。最初の手紙の後でさえ。
PHP:
$search = $_GET["search"];
if(!empty($search))
{
try {
$connes = new PDO("mysql:host=$DB_HOST;dbname=$DB_NAME", $DB_USER,
$DB_PASS);
$connes->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmtb = $connes->prepare("SELECT * FROM table WHERE col like('%" .
simple_protect($search) . "%') ORDER BY col LIMIT 2");
$stmtb->execute();
$resulta = $stmtb->fetchAll();
}
catch(PDOException $b) {
echo "Error: " . $b->getMessage();
}
$connes = null;
if($resulta && count($resulta) > 0)
{
foreach($resulta as $key => $row)
{
echo '<a href="https://website.com/scheda/index.php?
dettagli='.strip_all($row['nome']).'"><div class="img-res-search"
style="background-image:url(https://website.com/img/miniature/min-
'.strip_all($row['icona']).')"></div><div class="tit-res-
search">'.strip_all($row['nome']).'</div></a><div class="dett-res-search">
<div class="dett1-res-search"><i class="fa fa-star" aria-hidden="true">
</i>'.strip_all($row['voto']).'</div><div class="dett2-res-search">
<i class="fa fa-flag" aria-hidden="true"></i>Section</div></div>'."\n";
}}
}
else
{
echo "Nessun Risultato!";
}
あなたが投稿したコードは基本的に無関係です(このQをjQueryでタグ付けして、そのコードを端数に短縮しますが、それを使用していないことは例外です)。あなたは[mcve]を提供する必要があります –
ここで共有したコードでは不十分です。さらに、jqueryコードはどこですか? – Ele
完全なコードで編集しましたが、これが役立つことを願っています。申し訳ありませんが、初めてstackoverflowを使用しています:( –