Problem mit Auto suggest

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Auto suggest

    Hallo, Ich habe ein Formular, womann eine Plz eingibt, wird diese gesucht und der Ort und und die PLZ in das Feld eingetragen.

    Das auswählen und Anzeigen der suche funktioniert soweit.

    Wenn ich eine Gemeinde aus der Liste auswähle bzw. anklicke, sollen die Daten für den gewählten Datensatz, in die einzelnen Formular Felder geschrieben werden.

    Im Augenblick schreibt er mir den letzten Datensatz in das Formular.
    Egal welcher Datensatz aus der Liste ausgewählt wurde und nicht den Datensatz der ausgewählt wurde.

    Wie bekomme ich das hin?

    Code:
    //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("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
    	}
    }
    
    //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 = escape(document.getElementById('poi_plz').value);
    		searchReq.open("GET", 'searchsubcountry.php?plz=' + str, true);
    		searchReq.onreadystatechange = handleSearchSuggest; 
    		searchReq.send(null);
    	}		
    }
    
    //Called when the AJAX response is returned.
    function handleSearchSuggest() {
    	if (searchReq.readyState == 4) {
    		document.getElementById("search_suggest").style.display = "block";
    		var ss = document.getElementById('search_suggest')
    		ss.innerHTML = '';
    						
    		var str = searchReq.respon************ML;
    		
    		var gdaten = str.getElementsByTagName("ort");
    		
    		for(i=0; i < gdaten.length - 1; i++) {
    		
    			// Daten holen
    			 id = gdaten[i].getElementsByTagName("id")[0].firstChild.nodeValue;   
                 plz = gdaten[i].getElementsByTagName("plz")[0].firstChild.nodeValue;  
    			 gemeindename = gdaten[i].getElementsByTagName("gemeinde")[0].firstChild.nodeValue;
    			 ortsteil = gdaten[i].getElementsByTagName("ortsteil")[0].firstChild.nodeValue;
    			 kreis = gdaten[i].getElementsByTagName("kreis")[0].firstChild.nodeValue;
    			 bundesland = gdaten[i].getElementsByTagName("bundesland")[0].firstChild.nodeValue;
    			 
    			 						
    			//Build our element string.  This is cleaner using the DOM, but
    			//IE doesn't support dynamically added attributes.
    			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
    			suggest += 'onmouseout="javascript:suggestOut(this);" ';
    			suggest += 'onclick="javascript:setSearch(this.innerHTML), getdata(plz,gemeindename,ortsteil);" ';
    			suggest += 'class="suggest_link">' + plz + ' ' + ortsteil + '</div>';
    			ss.innerHTML += suggest;
    
    		}
    		
    		document.getElementById("search_suggest").style.display = "block";
    	}
    }
    
    //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('poi_plz').value = value;
    	document.getElementById('search_suggest').innerHTML = '';
    	document.getElementById("search_suggest").style.display = "none";
    }
    
    
    function getdata(v1,v2,v3) {
    	document.getElementById('poi_plz').value = v1;
    	document.getElementById('poi_gemeinde').value = v2;
    	document.getElementById('poi_ort').value = v3;
    	document.getElementById('search_suggest').innerHTML = '';
    	document.getElementById("search_suggest").style.display = "none";
    }
    
    
    function dropSearch() {
    	document.getElementById('poi_plz').value = '';
    	document.getElementById("search_suggest").style.display = "none";
    }
    Mfg Maffy
    Zuletzt geändert von maffy; 25.03.2009, 19:09.
    in der ruhe liegt die kraft

  • #2
    darf ich raten? der code ist nicht von dir, oder? dafür ist doch wohl die funktion getdata zuständig. die musst du einfach nur aufrufen.

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Das Script ist nicht von mir.
      Die Funktion getData habe ich selber hinzugefügt, vermutlich aber an falscher stelle.

      Hm.
      in der ruhe liegt die kraft

      Kommentar


      • #4
        auf den ersten blick würde ich vermuten, dass du diese funktion in der handleSearchSuggest aufrufen musst. natürlich mit den entsprechenden paramatern.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Hallo,
          Ich habe nun eine Lösung, die wunderbar funktioniert.

          Code:
          ////////////////////////////////////////////////////
          // Daten per Ajax holen und in Formular schreiben
          ////////////////////////////////////////////////////
           
          //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("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
          	}
          }
          
          //Our XmlHttpRequest object to get the auto suggest
          var searchReq = getXmlHttpRequestObject();
          
          //Called from keyup on the search textbox.
          //Starts the AJAX request.
          function searchSuggest() {
          
          	// Eingabe testen ob es Text ist
            	var Wert = document.getElementById('ort_search').value, chkB = 0;
             			
          	for (i = 0; i < Wert.length; i++) {
             			var ch = Wert.substring(i, i + 1);
              		if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) 
              		&& ch!=' ' && ch!='ä' && ch!='Ä' && ch!='ö' && ch!='Ö' && ch!='ü' && ch!='Ü' && ch!='ß') {chkB = 1}
             	}
          			
           	if (chkB == 1) {						
          			alert("Geben Sie bitte nur Buchstaben ein!");
          			document.getElementById('ort_search').value = '';
          			document.getElementById("search_suggest").style.display = "none";									
          			return;			
          	}
          
          	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
          
          		var str = escape(document.getElementById('ort_search').value);			
          		searchReq.open("GET", 'searchsubcountry.php?search=' + str, true);
          		searchReq.onreadystatechange = handleSearchSuggest; 
          		searchReq.send(null);
          	}		
          }
          
          // Array für Ortsdaten festlegen
          var ortsdaten = [];
          var gemeindedaten = [];
          var gemeindeplz = [];
          
          var i;
          
          //Called when the AJAX response is returned.
          function handleSearchSuggest() {
          	if (searchReq.readyState == 4) {
          		document.getElementById("search_suggest").style.display = "block";
          		var ss = document.getElementById('search_suggest')
          		ss.innerHTML = '';
          												
          		var xmlRoot = searchReq.respon************ML;
          		
          		var xmldaten = xmlRoot.getElementsByTagName("ort");
          		
          	    for (var i = 0; i < xmldaten.length; i++) {
          													
          			// Daten holen
          			id = xmldaten[i].getElementsByTagName("id")[0].firstChild.nodeValue;   
                      plz = xmldaten[i].getElementsByTagName("plz")[0].firstChild.nodeValue;  
          			gemeinde = xmldaten[i].getElementsByTagName("gemeinde")[0].firstChild.nodeValue;									
          			ortsteil = xmldaten[i].getElementsByTagName("ortsteil")[0].firstChild.nodeValue;
          
          			//Build our element string.  This is cleaner using the DOM, but
          			//IE doesn't support dynamically added attributes.
          			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
          			suggest += 'onmouseout="javascript:suggestOut(this);" ';
          			suggest += 'onclick="javascript:setSearch(this.innerHTML); setGemeinde('+i+');" ';
          			suggest += 'class="suggest_link">' + plz + ' ' + ortsteil + ' </div>';
          			ss.innerHTML += suggest;
          			
          			// Daten für später in ein Array festhalten
          			ortsdaten[i] = ortsteil;
          			gemeindedaten[i] = gemeinde;
          			gemeindeplz[i] = plz;
          			
          		}
          	
          		document.getElementById("search_suggest").style.display = "block";
          		
          	}
          }
          
          //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(v1) {
          	document.getElementById('ort_search').value = v1;		
          	document.getElementById('search_suggest').innerHTML = '';
          	document.getElementById("search_suggest").style.display = "none";				
          }
          
          function setGemeinde(i) {	
          	document.getElementById('poi_gemeinde').value = gemeindedaten[i];
          	document.getElementById('poi_ort').value = ortsdaten[i];
          	document.getElementById('poi_plz').value = gemeindeplz[i];		
          }
          
          function dropSearch() {
          	document.getElementById('ort_search').value = '';
          	document.getElementById('poi_plz').value = '';
          	document.getElementById('poi_gemeinde').value = '';
          	document.getElementById('poi_ort').value = '';
          	document.getElementById("search_suggest").style.display = "none";
          }
          
          	// Formular Testen
          function CheckFormText() {
          	
            	var Wert = document.getElementById('ort_search').value, chkB = 0;
             			
          	for (i = 0; i < Wert.length; i++) {
             			var ch = Wert.substring(i, i + 1);
              		if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) 
              		&& ch!=' ' && ch!='ä' && ch!='Ä' && ch!='ö' && ch!='Ö' && ch!='ü' && ch!='Ü' && ch!='ß') {chkB = 1}
             	}
          			
           	if (chkB == 1) {						
          			alert("Geben Sie bitte nur Buchstaben ein!");
          			document.getElementById("search_suggest").style.display = "none";									
          			return;			
          	}
          
          }
          MFG Maffy
          in der ruhe liegt die kraft

          Kommentar

          Lädt...
          X