Avatar billede kavlar Novice
04. oktober 2010 - 22:44 Der er 1 kommentar og
1 løsning

Livesearch valg

Hej Eksperter.

Jeg har fået lavet mig en livesearch. Det virker rigtig fint med at finde mulighederne i livesearch. Da jeg skal bruge det i en søgeform, kunne jeg godt tænke mig, at man kunne klikke på den mulighed, der var bedst, så tekstboksen blev udfyldt med det navn. Er det muligt?

Jeg har gengivet min kode nedenfor.


index.php

<html>
<head>
<script type="text/javascript">
function showResult(str)
{
if (str.length==0)
  {
  document.getElementById("livesearch").innerHTML="";
  document.getElementById("livesearch").style.border="0px";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
    document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
xmlhttp.open("GET","getUser.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="text" size="30" onkeyup="showResult(this.value)" />
<input type=">
<div id="livesearch"></div>
</form>

</body>
</html>



getUser.php

<?php
$q=$_GET["q"];

require_once('config.php'); // henter konstanter til PDO connection
$dbh = new PDO(FIRSTATT_PDO, DB_USER, DB_PASS);

$sql="SELECT * FROM users WHERE CONCAT(firstName, ' ', lastName) LIKE '%".$q."%'";

$result = $dbh->query($sql);

while($row = $result->fetch(PDO::FETCH_ASSOC))
  {
        echo "<div>" . $row['firstName'] . " " . $row['lastName'] . "</div>";
  }

?>
Avatar billede intenz Novice
05. oktober 2010 - 11:03 #1
Prøv at lav følgende ændringer.

Ændre:
<input type="text" size="30" onkeyup="showResult(this.value)" />

til:
<input type="text" size="30" onkeyup="showResult(this.value)" id="livesearch_field" />

Ændre:
echo "<div>" . $row['firstName'] . " " . $row['lastName'] . "</div>";

til:
echo "<div onclick=\"document.getElementById('livesearch_field').value=this.innerHTML;\">" . $row['firstName'] . " " . $row['lastName'] . "</div>";
Avatar billede kavlar Novice
05. oktober 2010 - 11:28 #2
Super! Det virker... Nu skal jeg så bare lige have lavet det sådan, at når man forlader tekstboksen, at så forsvinder ens valg.
Skulle du sidde inde med det svar, må du meget gerne skrive det også
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester