Chrome: изменение значения выбора с помощью jQuery работает неправильно - PullRequest
0 голосов
/ 29 ноября 2010

Этот код работал в IE, FF и Safari (windows7).

Однако в Chrome он не работает.

В основном я пытаюсь внести некоторые изменения при загрузке страницы (страница продукта Magento). Я изменяю выбранную опцию (скрытого выпадающего списка), затем, когда они наводят курсор на кнопку «Добавить в корзину», я проверяю, выбрана ли опция.

Код ниже:

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

... потом позже ...

 $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(); 
     });

Что происходит, так это то, что Chrome выбирает параметр, о котором я его прошу, но он как-то возвращается обратно ... возможно, есть другой вызов, который отменяет его ..

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Я до сих пор не знаю, в чем проблема.

Я решил это, переместив свой код ближе к концу вызовов javascript.

Код, после которого я его переместил, кажется, едва ли связан… назначение функции more .click, которая просто добавляет / удаляет классы, а не изменяет значения форм. + некоторый видеокод ..

Спасибо @clockworkgeek за попытку помочь.

0 голосов
/ 30 ноября 2010

Если вы знаете, $j('select#attribute76').val() выдает значение, почему бы не использовать его всегда вместо более длинного $j('select#attribute76 option:selected').val(), которое не работает?

Редактировать:
Я понимаю лучше,Значением select может быть массив, поскольку select также может быть множественным выбором.При сравнении с пустой строкой ('') большинство браузеров используют ярлык для обработки всех пустых значений как равных, будь то 0, NULL или массив без элементов.Я полагаю, что вам, возможно, повезет больше с

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

или приведением возвращенного значения к строке

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