Funktionsaufruf bei onchange-Event einer Select-Box

phpameise

Mitglied
Ich hab folgendes Problem. 2 Selectboxen sind abhängig miteinander verbunden (php, Ajax) Nun benötigt die 1. Select-Box ein 'onchange' Event, damit Ajax arbeiten kann. Ich möchte nun gerne das ganze auch durch ein click auslösen. Der 'click' auf einem Element auf meiner Seite steuert auch die Funktion an.
Code:
Spry.$$("DIV#TabBevorzugteOrt").addEventListener("click", getCity1, false)
Allerdings bekomme ich natürlich diesen Fehler.
There was a problem while using XMLHTTP:
Not Found
Es fehlt ja im Gegensatz zum onchange die Übergabe der URL. Das Script:
Code:
<script>
function getXMLHTTP() { //fuction to return the xml http object
		var xmlhttp=false;	
		try{
			xmlhttp=new XMLHttpRequest();
		}
		catch(e)	{		
			try{			
				xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e1){
					xmlhttp=false;
				}
			}
		}
		 	
		return xmlhttp;
	}
	
	
	
	function getCity1(strURL) {		
		
		var req = getXMLHTTP();
		
		if (req) {
			
			req.onreadystatechange = function() {
				if (req.readyState == 4) {
					// only if "OK"
					if (req.status == 200) {						
						document.getElementById('StadtAusland1div').innerHTML=req.responseText;						
					} else {
						alert("There was a problem while using XMLHTTP:\n" + req.statusText);
					}
				}				
			}			
			req.open("GET", strURL, true);
			req.send(null);
		}
				
	}
</script>
Der Code von der Selectbox:
PHP:
onchange="getCity1('findcity.php?country='+this.value)"
Die Variable für den Wert 'country' ist bei Seitenaufruf bereits vorhanden. Sie kann leer sein, dann brauche ich das 'onchange', sie kann einen Wert haben, dann soll das ganze per 'click' ausgeführt werden. Was muss ich tun, damit ich die URL entsprechend auch durch 'click' in die Funktion bekomme? Ich hoffe, es war nicht zu verwirrend.- Wenn Anfänger was ausdrücken wollen;)
 
Hi phpameise,

füg doch einfach dem HTML-Tag der Divs folgendes hinzu:
HTML:
onclick="getCity1('findcity.php?country='+document.getElementById('selectBoxId').options[document.getElementById('selectBoxId').selectedIndex]"
Dazu musst du natürlich auch dem select die id "selectBoxId" geben.

Gruß
 
Komme leider jetzt erst dazu. Danke für die Antwort. Leider verstehe ich nicht ganz. Meinst Du, ich sollte dem div Tag der 2. Selectbox den Code in folgender Form hinzufügen?
PHP:
<td><div id="StadtAusland1div" onclick="getCity1('findcity.php?country='+document.getElementById('Ausland1')
.options[document.getElementById('Ausland1').selectedIndex]">
            
<select name="StadtAusland1" id="StadtAusland1">
<option><?php echo $row_settings['StadtAusland1'];?></option>
</select>    
</div></td>
Wenn ja, dann funktionierts nicht.
Zur Erklärung - Selectbox1(Ausland1), Selectbox2(StadtAusland1). Durch die wahl eines Landes füllt sich die zweite Box mit möglichen Städten. Geht zurück auf Tutorial:
Da mein Formular auf verschiedene "AccordionPanelTabs" aufgeteilt ist, dachte ich, dass ich die Funktion zur Füllung von Select-Box 2 durch ein Click-Event auf das AccordionPanelTab auslösen kann. Wie gesagt, die Funktion ansteuen durch öffnen des AccordeonPanels "TabBevorzugteOrte" geht schon:
Code:
Spry.$$("DIV#TabBevorzugteOrt").addEventListener("click", getCity1, false)
Nur die Übergabe der URL mit dem Wert der ersten Box nicht.
 
Zuletzt bearbeitet:
Die Anregung hat mich zu folgendem inspiriert. Die 2. Selectbox ist standardmäßig 'disabled' Hinter der Box habe ich einen 'ändern' Link bei dem folgendes passiert: 1. steuere ich eine Funktion an, die das Feld 'enabled' und 2. steure ich mein Ajax zum Füllen der Box an:
PHP:
<a href="javascript:makeEnable();" onclick="getCity1('findcity.php?country='+document.getElementById('Ausland1').value)">ändern</a>
Das ist bestimmt deletantisch aber für den User verständlich und für mich mit meinen Kenntnissen optimal. Danke
 

Neue Beiträge

Zurück