jQuery - irgend was mach ich falsch

arraybreak

Erfahrenes Mitglied
Tag zusammen,

wie bereits der Titel sagt, irgend was mach ich falsch.

Habe 2 Selects-Auswahlen.
Funktion:
Wenn man bei der ersten Auswahl eine Auswahl getroffen hat, erscheint die Zweite Auswahl und wenn man beim der 2ten eine Wahl getroffen hat - erscheint eine versteckte DIV.

Hier erst mal die Selects:

HTML:
<h3>Sprache des Angebots</h3>
    <select id="sprach_auswahl" name="sprach_auswahl">   
      <option id="no_lan_radio" value="noselection" selected="selected">Select your Language</option>
      <option id="german_radio" value="Deutsch">Deutsch</option>
      <option id="english_radio" value="Englisch">Englisch</option>
      <option id="france_radio" value="Französisch">Französisch</option>  
    </select>


<h3>Gewünschter Fahrzeug</h3>


<div id="nothing_set">Bitte wählen Sie zuerst eine Sprache aus</div>
  <div id="german_set">
    <select id="tro_de" name="car_auswahl">
      <option id="no_radio" value="noselectcar">Please Select</option> 
      <option id="audi_radio" value="Audi_de">AUDI</option>
      <option id="bmw_radio" value="BMW_de">BMW</option>
      <option id="benz_radio" value="Benz_de">Mercedes</option>
     </select>
</div>

<div id="english_set" >
    <select id="tro_en" name="car_auswahl"> 
      <option id="no_radio" value="noselectcar">Please Select</option>
      <option id="audi_radio" value="Audi_en">AUDI</option>
      <option id="bmw_radio" value="BMW_en">BMW</option>
      <option id="benz_radio" value="Benz_en">Mercedes</option>
    </select>    
</div>

<div id="france_set">
<select id="tro_fr" name="car_auswahl">
      <option id="no_radio" value="noselectcar">Please Select</option>
      <option id="audi_radio" value="Audi_fr">AUDI</option>
      <option id="bmw_radio" value="BMW_fr">BMW</option>
      <option id="benz_radio" value="Benz_fr">Mercedes-Benz</option>
    </select>    
</div>

<div id="select_box">Wählen Sie bitte zuerst einen Hersteller</div>

<div id="audi_box">ANGEBOT für AUDI</div>

<div id="bmw_box">ANGEBOT für BMW</div>

<div id="benz_box">ANGEBOT für Mercedes-Benz</div>

Dazu die jQuery Anweisungen:
Javascript:
// 1ter Select

jQuery(document).ready(function($) {
    // Erst mal Auto-Wahl-Selects ausblenden       
  jQuery('#german_set, #english_set, #france_set').hide();
   
  $("select[id='sprach_auswahl']").change ( function() {
      // Wenn nichts gewählt
  if ($("option[id='no_lan_radio']:selected").val()){$("#german_set, #english_set, #france_set").hide();
   $("#nothing_set").show(); }
      // Wenn Deutsch gewählt
  if ($("option[id='german_radio']:selected").val()){$("#english_set, #france_set, #nothing_set").hide();   
  $("#german_set").show(); }    
      // Wenn Englisch gewählt
  if ($("option[id='english_radio']:selected").val()){$("#german_set, #france_set, #nothing_set").hide();  
  $("#english_set").show(); }
      // Wenn Französisch gewählt
  if ($("option[id='france_radio']:selected").val()){$("#german_set, #english_set, #nothing_set").hide();
  $("#latvia_set").show(); } 
  });
});


// 2ter Select

jQuery(document).ready(function($) {
     // Erst alle DIVs ausblenden   
    jQuery('#select_box, #audi_box, #bmw_box, #benz_box').hide();   
   
    $("select[id='tro_de'], select[id='tro_en'], select[id='tro_fr']").change( function() {
   
        // Wenn nichts gewählt
      if ($("option[id='no_radio']:selected").val()) { $("#audi_box, #bmw_box, #benz_box").hide(); $("#select_box").show(); }
     
       // Wenn Audi gewählt
      if ($("option[id='audi_radio']:selected").val()) { $("#bmw_box, #benz_box, #select_box").hide(); $("#audi_box").show(); }
      
      // Wenn BMW gewählt       
      if ($("option[id='bmw_radio']:selected").val()) { $("#audi_box, #benz_box, #select_box").hide(); $("#bmw_box").show(); }
     
      // Wenn Mercedes-Benz gewählt
      if ($("option[id='benz_radio']:selected").val()) { $("#audi_box, #bmw_box, #select_box").hide(); $("#benz_box").show(); }
                 
    });   
});

Zum Fehler:

Wenn ich die Seite Neu Lade und erstmal eine Sprache auswähle, und dann ein Auto - geht es ohne Probleme.
Wenn ich dann paar mal so hin und her zwischen Sprache und Autos wechsle - dann bleibt er irgend wann mal stehen und wechselt nicht mehr zwischen diesen mehreren, versteckten DIVs.

Mit Firefox - Firebug zeigt er mir keine Fehlermeldung an.

Fehler im jQuery-Script?

LG Alex
 
Ich habe mir gerade die Frage gestellt, worin jetzt direkt der Unterschied in der Auswahl zwischen den einzelnen Sprachen liegt: Gibt es in bestimmten Ländern einige Autos nicht? Oder heißen die nicht überall gleich? Oder brauchst Du nur beim Absenden die Sprache? Oder was ist der Grund? Weil ich persönlich sehe keinen Grund, warum Du für jede Sprache eine eigene Auswahlliste brauchst, wenn die Autos immer die gleichen sind und auch alle gleich heißen, aber sich letztendlich nur der Wert der Auswahl ändert. Diesen kannst Du Dir auch anders merken.
 
mir ist nur der "Value"-Wert vom 2ten Select wichtig. Weil der 2te Select gleich die Sprache mit angibt:
z.b. Audi_de oder Audi_en
 
Okay, dann nimm es mir nicht übel, aber das solltest Du sauberer lösen. Wenn Du das als Formular an einen Server schickst, dann ist die Sprache so oder so schon durch die erste Auswahl festgelegt. Ansonsten kannst Du sie clientseitig auch von dort abgreifen. Also kurz: sauberer und sinnvoller wäre es, nur eine Auswahl für alle Sprachen anzubieten und die Sprache separat zu speichern. Ist auch weniger Aufwand.
 
Danke, werde ich jetzt so versuchen zu lösen, kleines Problem ist allerdings vorhanden, diese 2 Selects liegen außerhalb der "<form> und müssen gerade etwas umständlicher übergeben werden... (Da ich zurzeit ca. 5 <forms> nutze.)
Wenn du einfache Möglichkeit kennst, Werte zu übergeben die außerhalb der <form> liegen - würde ich mich freuen paar Vorschläge zu hören ;)
 
Das kommt ganz darauf an, ob Du es nur clientseitig nutzen willst oder ob Du die Daten auch an den Server schicken willst. Vielleicht könntest Du auch skizzieren, was Du genau am Ende haben willst, also was Dein Ziel ist, welches Du damit erreichen willst.
 
Ich will Sprache und Auto an ein PDF-Erzeuger übergeben, damit er ein Angebot mit diesem Auto und in jeweiliger Sprache ausgibt.
Diese 2 Selects liegen außerhalb des "<form>" und müssen so mit, erst ausgelesen werden, und dann in jeweilige "<form>" eingefügt werden - damit diese beiden Werte übergeben werden können.
Das nutzte ich zurzeit, um wert auszulesen und in ein "input - hidden" Feld einzufügen:

Javascript:
var output = document.getElementById('output');
   
       // "el" is the parameter that references the "this" argument that was passed
    function GetSelectedItem(el) {
        output.innerHTML = el.value; // set its content to the value of the "el"
        var thetarif = document.getElementById('output').innerHTML;

        document.form1.thetarif5.value = thetarif;
        document.form2.thetarif5.value = thetarif;
        document.form3.thetarif5.value = thetarif;
        document.form4.thetarif5.value = thetarif;
        document.form5.thetarif5.value = thetarif;
     
    }
HTML:
<div style="display:none" id="output"></div>
<!-- in Div id="output" wird erst mal eingefügt --> und dann zugleich in INPUT(name="thetarif5") übergeben, dieses INPUT befindet sich in der Form drin und wird mit der Form dann später abgeschickt und übergeben.
<input class="rechner-ausgabe" type="text" readonly="readonly" name="thetarif5" id="thetarif5" value="" />


Vorher hab ich diesen Empfänger gehabt:
PHP:
if ($_POST["thetarif5"] == "Audi_de") { $audi_deutsch = true; }

Jetzt brauch ich ein Empfänger der Beide Werte übernimmt und nicht nur eins, ungefähr so:
PHP:
if ($_POST["thetarif5"] == "Audi" && $_POST["thelang"] == "Deutsch") { $audi_deutsch = true; }

Ich hoffe du kommst noch mit ;)
 
Was mir jetzt noch unklar ist, ist die Tatsache, was die fünf einzelnen Formulare sind. Also worin unterscheiden sich diese?
 
Mh, okay. Um die ganze Sache abzukürzen: wenn es für Dich machbar ist, würde ich gerne alle Formulare von Dir sehen, also den Quelltext, sowie alle Sachen, die mit der Verarbeitung dieser in Verbindung stehen. Denn soweit das für mich bisher ersichtlich ist, hast Du hier einen groben Denkfehler drin und trennst Deine Formulare fälschlicherweise. An sich müssten sie alle in einem liegen.
 

Neue Beiträge

Zurück