ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
307
307
EMPFEHLEN
-
Hi,
habs endlich mal hinbekommen, ein autocompleter-Tutorial mit jQuery "hinzubekommen".
Mein Problem ist jetzt, dass ich gerne mehrere Formulare auf einer Seite hätte, die sich gegenseitig bedingen sollen, also das die Eingabemöglichkeiten nach vorherigen Eingaben basieren.
Das Script ist wie folgt aufgebaut:
Der header in der header.php
Die Eingabemaske:PHP-Code:<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.post("rpc.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
} // lookup
function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
</script>
Der autocompleter:PHP-Code:<div>
<form>
<div>
Type your county:
<br />
<input type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
</div>
<div class="suggestionsBox" id="suggestions" style="display: none;">
<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
<div class="suggestionList" id="autoSuggestionsList">
</div>
</div>
</form>
</div>
PHP-Code:<?php
// PHP5 Implementation - uses MySQLi.
// mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
$db = new mysqli('localhost', 'root' ,'', 'test');
if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
// Is there a posted query string?
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);
// Is the string length greater than 0?
if(strlen($queryString) >0) {
// Run the query: We use LIKE '$queryString%'
// The percentage sign is a wild-card, in my example of countries it works like this...
// $queryString = 'Uni';
// Returned data = 'United States, United Kindom';
// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10
$query = $db->query("SELECT land FROM test WHERE land LIKE '$queryString%' LIMIT 10");
if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
while ($result = $query ->fetch_object()) {
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.
// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<li onClick="fill(\''.$result->land.'\');">'.$result->land.'</li>';
}
} else {
echo 'ERROR: There was a problem with the query.';
}
} else {
// Dont do anything.
} // There is a queryString.
} else {
echo 'There should be no direct access to this script!';
}
}
?>
Jetzt die große Frage: Wie bekomme ich das mit den ids hin, so dass sich da nix im Wege steht?
Sorry, wenn ich mit dieser Frage nerven sollte.
Vielen Dank im Voraus!-/ Realität ist nur was für Leute, die mit Drogen nicht zurecht kommen /-
-
Moin z0oLDie Frage nervt nicht

Das Problem ist ja ansich, dass du auf die IDs verzichten musst, wenn du mehrerer Autocompleter verwenden willst. Das ist kein grosses Problem
Der Aufbau ist ja immer derselbe....du hast das Eingabefeld in einem <div>
Der Knoten, der diesem <div> folgt, ist die suggestionsBox, wiederum das 1. <div> der suggestionsBox die suggestionList...beste Vorraussetzungen, um dort durch die Knoten zu Wandern.
Du musst lookup anstatt des values des Eingabefeldes nur das Einagebfeld selbst als Objekt übergeben:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
function lookup(inputObject) { //Wert des Eingabefeldes var inputValue = inputObject.value; //zugehörige suggestionsBox des Eingabefeldes var suggestionsBox = $(inputObject.parentNode).nextAll('div.suggestionsBox').get(0); //zugehörige suggestionList des Eingabefeldes var suggestionList = $(suggestionsBox).children('div.suggestionList').get(0); //...uswusf. }
-
Wie genau implementiere ich das denn? Und wie geanu geht es nach uswusf... weiter? Irgendwie müssen die Formulare ja unterschieden werden.
Vielleicht mach ich es besser so, dass es für jedes input eine eigene Seite gibt. Würde mir wohl einige Arbeit ersparen, wär aber auch nicht so elegant...-/ Realität ist nur was für Leute, die mit Drogen nicht zurecht kommen /-
-
Ähnliche Themen
-
Formulare aus HTML Dokument heraus parsen
Von Refereen im Forum JavaAntworten: 2Letzter Beitrag: 07.01.06, 00:14 -
Mehrere Formulare zu einem zusammenfassen ?
Von tobiho im Forum PHPAntworten: 19Letzter Beitrag: 27.10.05, 03:55 -
Mehrere Solver in einem Dokument
Von JFHunter im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 26.05.05, 10:45 -
Mehrere Block-Elemente in einem Dokument möglich?!
Von davey im Forum CSSAntworten: 1Letzter Beitrag: 12.04.05, 14:40 -
Mehrere gleiche Formulare in einem hochladen
Von phpmaxx im Forum PHPAntworten: 1Letzter Beitrag: 13.05.04, 23:18





Zitieren

Login





