2010-11-29 8 views
0

Dieser Code funktionierte in IE, FF und Safari (Windows7).Chrome: Ändern von Select Value mit jQuery funktioniert nicht richtig

Es funktioniert jedoch nicht in Chrome.

Grundsätzlich versuche ich einige Änderungen beim Laden der Seite (Magento-Produktseite) vorzunehmen. Ich ändere die ausgewählte Option (eines ausgeblendeten Dropdown-Menüs), und wenn sie den Mauszeiger über die Schaltfläche "In den Warenkorb" bewegen, stelle ich sicher, dass eine Option ausgewählt wurde.

-Code unten:

$j('select#attribute76').val($j('a'+hash).attr('index')).change(); 
alert($j('select#attribute76').val()); // shows correctly w/ all browsers 

... dann später ...

$j('#addtocartbutton').hover(function(){ 
     //alert($j('select#attribute76 option:selected').val());// empty in Chrome! 
     if ($j('select#attribute76').val()=='')// empty in Chrome! 
      $j('.infoOptionsColors a:first').click(); 
    }); 

Was geschieht, ist, dass Chrome die Option wählen, die ich frage sie, aber es kehrt zurück irgendwie ... vielleicht gibt es einen anderen Anruf, der es überschreibt.

Antwort

0

Ich weiß noch nicht, was das Problem war.

Ich löste es, indem ich meinen Code gegen Ende der Javascript Aufrufe mehr bewegt.

Der Code, nach dem ich ihn verschoben habe, scheint kaum verwandt zu sein. Er weist der .click-Funktion mehr zu, die nur Klassen hinzufügt/entfernt und keine Formularwerte ändert. + irgendein vide code ..

Danke @clockworkgeek für das Versuchen zu helfen.

0

Wenn Sie wissen, dass $j('select#attribute76').val() einen Wert produziert, warum verwenden Sie nicht immer das anstelle des längeren $j('select#attribute76 option:selected').val() welches funktioniert nicht?

Bearbeiten:
Ich verstehe besser. Der Wert einer Auswahl kann ein Array sein, da eine Auswahl auch eine Mehrfachauswahl sein kann. Beim Vergleich mit einer leeren Zeichenfolge ('') machen die meisten Browser die Verknüpfung zur Behandlung aller leeren Werte als gleich, egal ob es sich um 0, NULL oder ein Array ohne Elemente handelt. Ich glaube, man könnte mehr Glück mit

if (!$j('select#attribute76').val()) 

oder durch den zurückgegebenen Wert in einem String Casting

if (String($j('select#attribute76').val())=='') 
+0

Ich glaube, dass ich beides ausprobiert habe. Ich verwende die kürzere Version im Programm-Code .. die IF..THEN verwendet die kürzere und ist immer noch leer. –