Funktion ausführen + Wert ausgeben

proloser

Erfahrenes Mitglied
Hallo,

ich habe zwei Dropdownfelder, im ersten wähle ich das Land und im zweiten das Bundesland nun habe ich das mit einem QuickJump gelöst ... sobald ein Land gewählt wird ladet die Seite neu und die dazugehörigen Bundesländer sollten angezeigt werden!


Damit Name, Adresse usw stehen bleibt muss ein anderes Form (anderesform)ausgeführt werden, das ganze würde funktionieren wenn ...

Nun meine Frage:

Wie kann ich in einem value eine JavaScript Funktion + einen Wert weiter geben!

Derzeit sieht das so aus wird allerdings kein Wert ausgegeben
HTML:
<option value='javascript:anderesform();'>Österreich</option>

So sollte das in etwa dann aussehen nur mit den richtigen Befehlen!
HTML:
<option value='javascript:anderesform(); AND Österreich'>Österreich</option>


Das ganze ist etwas kompliziert zu erklären aber ich hoffe ihr wisst was ich meine!

MfG proloser
 
Zuletzt bearbeitet:
Hi,

vielleicht solltest Du die Seite nicht neu laden. Stattdessen könntest Du die Bundesländer aus einem Array
auslesen und ein zweites Selectfeld damit füllen.

Beispiel:
Code:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">
  <!--
var arrBundesland = new Array();
arrBundesland[0] = ["---"];
arrBundesland[1] = ["Burgenland", "Kärnten", "Niederösterreich",
                    "Oberösterreich", "Salzburg", "Steiermark",
                    "Tirol", "Vorarlberg", "Wien"];
arrBundesland[2] = ["Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg",
                    "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen",
                    "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen"];

function setBL(objSel){
  var objForm = objSel.form;
  var intIndex = objSel.selectedIndex;

  // Vorhandene Optionen löschen
  objForm.selBL.length = 0;

  // Alle Bundesländer durchlaufen
  for(var i=0; i<arrBundesland[intIndex].length; i++){
    // Ersten Eintrag auswählen
    var blnSelected = (i==0) ? true : false;
    // Neue Option anlegen
    var objOption = new Option(arrBundesland[intIndex][i], arrBundesland[intIndex][i], false, blnSelected);
    // Option einhängen
    objForm.selBL.options[objForm.selBL.length] = objOption;
  }

  // Bundeslandselect anzeigen/verbergen
  objForm.selBL.style.display = (intIndex == 0) ? "none" : "inline";
}
 //-->
</script>
</head>
<body>
<form>
  <select name="selLand" onchange="setBL(this);">
    <option value="">- auswählen -</option>
    <option value="">Österreich</option>
    <option value="">Deutschland</option>
  </select>

  <select name="selBL" style="display: none;">
    <option value="">---</option>
  </select>
</form>
</body>
</html>
Der jeweils aktuell gewählte Index aus dem ersten Selectfeld entspricht dem Index aus dem Bundeslandarray.

Vielleicht hilft Dir das weiter.

Ciao
Quaese
 
Hi,

das wäre zum Beispiel mit AJAX möglich.

Du sendest einen Request an ein PHP-Dokument, in dem Du die Datenbank abfragst. Aus den Ergebnisdaten erstellst
Du ein Selectfeld und schreibst dieses in das Dokument. Anschliessend wird es wieder an das Ausgangsdokument
zurückgesendet. Dort kann es mit Hilfe von innerHTML eingebunden werden.

Folgende Dokumente sollen die prinzipielle Vorgehensweise verdeutlichen:

HTML-Dokument:
Code:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">
  <!--
var objXMLRequest;

function initRequest() {
  var objTmpRequest;

  // Falls es sich um einen Nicht-IE-Browser handelt
  if(window.XMLHttpRequest) {
    try{
      // XMLHttpRequest-Objekt instanziieren
      objTmpRequest = new XMLHttpRequest();
    }catch(e){
      objTmpRequest = false;
    }
  // Falls es sich um einen IE handelt (ActiveX-Schnittstelle verwenden)
  } else if(window.ActiveXObject) {
    try{
      objTmpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try{
        objTmpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }catch(e){
        objTmpRequest = false;
      }
    }
  }
  return objTmpRequest;
}

function sendRequest(strUrl){
  // Falls noch ein Request-Objekt existiert -> zunächst beenden
  if(objXMLRequest && objXMLRequest.readyState){
    objXMLRequest.abort( );
    objXMLRequest = false;
  }

  // Requestobjekt erstellen
  objXMLRequest = initRequest();

  // Falls das Request-Objekt erstellt werden konnte
  if(objXMLRequest) {
    // Listener, der bei Änderung des Fertig-Zustands die gewünschte Funktion aufruft
    objXMLRequest.onreadystatechange = function(){ processRequestData();};
    objXMLRequest.open("GET", strUrl, true);
    objXMLRequest.send("");
  }
}

function processRequestData() {
  // Nur wenn der Zustand "loaded" ist
  if(objXMLRequest.readyState == 4){
    // Nur wenn der Status "OK" ist
    if(objXMLRequest.status == 200){
      // Neues Selectfeld in entsprechendes Element einfügen
      document.getElementById("bl_id").innerHTML = unescape(objXMLRequest.responseText);
    }else{
      alert("Es ist ein Problem aufgetreten:\n" + objXMLRequest.statusText);
    }
  }
}
 //-->
</script>
</head>
<body>
<form>
  <div>
    <!--
       Es wird der aktuell gewählte Index übergeben.
       Möglich wäre aber auch das Übergeben des aktuell gewählten Wertes (value).
       sendRequest('xmlhttp_request_dummy.php?wert='+this.options[this.selectedIndex].value);
    -->
    <select name="selLand" onchange="sendRequest('xmlhttp_request_dummy.php?index='+this.selectedIndex);">
      <option value="default">- auswählen -</option>
      <option value="austria">Österreich</option>
      <option value="germany">Deutschland</option>
    </select>
  </div>

  <div id="bl_id">
    <select name="selBL">
      <option value="">---</option>
    </select>
  </div>
</form>
</body>
</html>
Das PHP-Dokument (hier: xmlhttp_request_dummy.php):
Code:
<?php
	/*
  	 $_GET['index'] wird im Request über die URL übergeben. Damit kann zum Beispiel die Datenbank abgefragt
     werden.
  */

  // Hier könnte die Datenbankabfrage stattfinden
  $arrDB[0] = array("---");
  $arrDB[1] = array("Burgenland", "Kärnten", "Niederösterreich",
                    "Oberösterreich", "Salzburg", "Steiermark",
                    "Tirol", "Vorarlberg", "Wien");
  $arrDB[2] = array("Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg",
                     "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen",
                      "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen");

  // Rückgabestring
  $strOut = "";

  if(isset($_GET['index']) && ($_GET['index']!="")){
    // Select aufbauen
    $strOut .= "<select name=\"selBL\">\n";
    foreach($arrDB[$_GET['index']] as $entry){
      $strOut .= "<option value=\"".$entry."\">".$entry."</option>\n";
    }
    $strOut .= "</select>\n";
  }else{
    $strOut .= "";
  }

  echo(rawurlencode($strOut));
?>
Ciao
Quaese
 
Vielen Dank aber so wie es aussieht ist mir das ganze doch etwas zu hoch! :rolleyes:

Deshalb nochmal zurück zu meiner Frage ist es möglich eine JavaScriptFunktion auszuführen + Value Wert weitergeben?


Auf die art villeicht? Funktioniert so nicht ...

HTML:
<option value="Österreich" onClick="javascript:anderesform();">Österreich</option>


MfG proloser
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück