Value für Formular aus DIV per Klick

djjlx

---???---
ID: 62937
L
9 Mai 2006
599
21
Hallo!

Wieder mal ein kleines Problem!
EDIT*
Neues Problem! Im 3. Post Lg
*
Ich sitze schon seit ca. 90 min daran und komm einfach nicht darauf.

Ich hab das AJAX Live Search Srcipt von w3school auf meine bedürfnisse zurecht gerückt.

Im text tag des Formulars wird der such begriff eingegeben dabei such das script live nach suchergebnissen aus der db.
Funktioniert wunderbar.
nur wenn ich nun auf das suchergebniss klicke sollte es in ebenfalls im text tag stehen und im value damit per Klick auf submit genau dieses Value gesendet wird.

Meine Suchseite

HTML:
<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","livesearch.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

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

</body>
</html>

Die livesearch.php:
PHP:
<?php
//get the q parameter from URL
$q=$_GET["q"];

//lookup all links from the xml file if length of q>0
if (strlen($q)>0)
{
$hint="";
$res = mysql_query("SELECT * FROM `".$dbprefix."_abrufbestell` WHERE `bestellnr` LIKE '%".$q."%'")or die(mysql_error());
while($data = mysql_fetch_array($res))
{
    if ($hint=="")
        {
                  $hint = "<a href=\"javascript:document.forms['suche'].elements['text'].value = '".$data["bestellnr"]."';\">".$data["bestellnr"]."</a>";

        }
else
        {
        $hint=$hint . "<br />".$data["bestellnr"]."";
}
}
}

if ($hint=="")
  {
  $response="no suggestion";
  }
else
  {
  $response=$hint;
  }

//output the response
echo $response;
?>

Es funktioniert alles bis auf das wenn man auf das ergebniss klick das es in das Textfeld "springt".

Hat jemand eine Idee wo der Fehler liegt?

Gruss
djjlx
 
Zuletzt bearbeitet:
Hab meinen fehler gefunden.

Hab in der Suchseite in Zeile 36 den namen des inputfelds vergessen und atribut type=text für name=text gehalten.

Also name="text" eingefügt und es funktioniert wunderbar.

Gruss
djjlx
 
Hallo!

Ich bin nun bei der weiteren Arbeit mit dem Script auf ein weiters Problem gestoßen.

xmlhttp.open("GET","livesearch.php?q="+str,true);

wie kann ich hier ein rel Attribut hinzufügen?!

Also rel="insert"

Problem ist das alles super funktioniert nur wenn ich die Suchseite in einer Lightbox bzw. Layer (wie weit verbreitet die Bildergalerien wo der hintergrund mit einen fade effekt überdeckt wird) funktioniert das Script wieder nicht und ich vermute das es daran liegt das ich alle links in der lightbox mit rel="insert" habe damit diese nicht geschloßen wird und vielleicht deswegen die livesearch.php nicht ladet.

Hat jemand nen Tipp für mich?
 
wie kann ich hier ein rel Attribut hinzufügen?!

Also rel="insert"
wie wäre es einfach das Attribut aus dem DOM-Knoten auszulesen?

ich vermute das es daran liegt das ich alle links in der lightbox mit rel="insert" habe damit diese nicht geschloßen wird und vielleicht deswegen die livesearch.php nicht ladet.
vermuten ist schonmal genau der falsche Weg. Lade dir Firebug, nutze dessen debug-Funktion (console.log('Test')) und finde die Ursache, raten woran es liegt führt zu nichts.

Hat jemand nen Tipp für mich?
jup, jQuery nutzen, macht die Sache viel einfacher als mit normalem JavaScript.