Ajax Live Suche mit mind. 3 Zeichen

xxxmike

Erfahrenes Mitglied
Hallo,
ich würde gerne bei mir eine Live Suche mit Ajax einbauen, was auch soweit funktioniert, nur ich möchte das die Suche erst beginnt wenn zum Beispiel mind. 3 Zeichen eingetragen sind. Denn es macht meiner Meinung keinen Sinn wenn die Suche bereits nach einem Buchstaben beginnt.


hier der ajax teil

Code:
<script type="text/javascript">
		function searchFor(suchbegriff){
			var xmlHttp = null;
			// Mozilla, Opera, Safari sowie Internet Explorer 7
			if (typeof XMLHttpRequest != 'undefined') {
				xmlHttp = new XMLHttpRequest();
			}
			if (!xmlHttp) {
				// Internet Explorer 6 und älter
				try {
					xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e) {
					try {
						xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
					} catch(e) {
						xmlHttp  = null;
					}
				}
			}
			// Wenn das Objekt erfolgreich erzeugt wurde			
			if (xmlHttp) {
		

				var url = "suche.php";
				var params = "suchbegriff="+suchbegriff;
				
				xmlHttp.open("POST", url, true);
				
				//Headerinformationen für den POST Request
				xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlHttp.setRequestHeader("Content-length", params.length);
				xmlHttp.setRequestHeader("Connection", "close");					
			
				xmlHttp.onreadystatechange = function () {
					if (xmlHttp.readyState == 4) {
						// Zurückgeliefertes Ergebnis wird in den DIV "ergebnis" geschrieben
						document.getElementById("ergebnis").innerHTML = xmlHttp.responseText;
					}
				};				
				xmlHttp.send(params);
			}			
		}
	</script>


das formular
Code:
<input type="text" onkeyup="searchFor(this.value);"/>

und der php code
PHP:
	if ($_POST["suchbegriff"] ){
	

	
	
		// Mysql Abfrage wird gespeichert mit den Notwendigen Parameter
		$sql = "SELECT * FROM ".$tabelle." WHERE suchworte LIKE ('%".mysql_real_escape_string(utf8_decode($_POST["suchbegriff"]))."%')";
		
		// Mysql Abfrage wird durchgeführt
		$result = mysql_query($sql);
		
		// Suchbegriff wird ausgegeben
		echo "<br><br>Sie Suchten nach: ".$_POST["suchbegriff"]."<br/><br/>";
		
		// Ergebnis wird ausgegeben mit Zeilenumbruch
		while($row = mysql_fetch_object($result)){
			echo $row->name;
			echo "<br/>";		
		}
	}

Wie erwähnt, möchte ich, dass die Suche erst beginnt wenn mind. 3 Zeichen eingegeben worden sind.

DANKE schon mal für jede Hilfe und jeden TIPP

D A N K E
 
Die Anzahl von Zeichen kriegst du über length raus.

Also suchbegriff.length oder im input this.value.length

Du könntest vor die searchFor funktion noch eine andere funktion setzen die erstmal auf length prüft und die searchFor funktion erst aufruft wenn length >= 3.

Oder du baust es halt direkt in deine searchfor funktion ein.
 
ja das hört sich alles cool an, aber wie genau baue ich das ein?
Javascript, Ajax ist leider nicht so meine Stärke:

Danke schon mal, finde ich immer super wenn man hier hilfe bekommt

DANKE
 
Zum Beispiel so
HTML:
<input type="text" onkeyup="(this.value.length >= 3) ? searchFor(this.value) : '';">

oder so
Javascript:
function preSearch(suchwort){
	if(suchwort.length>=3){
 		searchFor(suchwort);
	}else{
		return false;
	}
}
HTML:
<input type="text" onkeyup="preSearch(this.value);">

oder so
Javascript:
function searchFor(suchwort){
	if(suchwort.length<3){
		return false;
	}
	/*
	....dein code
	*/
}
HTML:
<input type="text" onkeyup="searchFor(this.value);">
 

Neue Beiträge

Zurück