혼자서 해결할 수없는 문제가 있습니다. 입력하는 동안 결과를 제안하는 ajax로 검색 입력을 만들었습니다. 이 스크립트는 Firefox에서 제대로 작동하지만 크롬에서 사용할 때 입력하는 동안 입력 필드가 포커스를 잃습니다.타이핑 중에 입력 필드의 초점이 흐려짐 (AJAX 검색)
//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>
사용 유형 및 아약스 호출한다. 결과를 인쇄하기 위해 데이터베이스와 서클에 대한 쿼리 만 있기 때문에 PHP 검색 페이지를 포함하지 않았습니다.
이상한 점은이 스크립트는 Firefox와 잘 작동하지만 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!";
}
게시 한 코드는 근본적으로 관련이 없습니다 (이 코드를 jQuery로 태그 지정 했으므로이 코드를 분수로 줄이거 나 사용하지는 않습니다). [mcve]를 제공해야합니다. –
여기서 공유 한 코드가 충분하지 않습니다. 또한, jquery 코드는 어디에 있습니까? – Ele
전체 코드로 편집했습니다. 도움이 될 수 있기를 바랍니다. 죄송하지만 처음 stackoverflow를 사용하는 것입니다 : ( –