jquery .change () в Firefox - PullRequest
       11

jquery .change () в Firefox

0 голосов
/ 18 февраля 2011

Я использую изменение jQuery для изменения значений другого выпадающего списка, когда пользователь меняет месяц (чтобы отображалось правильное количество дней). Это прекрасно работает во всех браузерах, кроме Firefox: (

Достаточно сказать, что код такой большой

$(document).ready(function() {

var leap;

$('.dob').change(function() {

var y = $('#ryear option:selected').html(); /* The year selected */
var s = $('#rmonth option:selected').html(); /* The month selected */

});


});

Затем я изменяю данные с учетом значений переменных. Есть 3 выбора с .dob, так что это немного похоже на

<select class="dob" id="rday">
     <option id="01">01</option>
     ....
</select>
<select class="dob" id="rmonth">
     <option id="1876">Jan</option>
     ....
</select>
<select class="dob" id="ryear">
     <option id="1876">1876</option>
     ....
</select>

В Firefox, когда я выбираю выпадающий список выбора месяца или года (на самом деле сценарий не выбирает значение дня, поэтому на него это не влияет), ну, выпадающий список мигает и появляется, а затем мгновенно исчезает при одном щелчке в Firefox.

Есть идеи, почему скрипт это делает?

Ответы [ 3 ]

1 голос
/ 18 февраля 2011

идентификаторы не могут начинаться с цифр.

идентификаторы должны быть уникальными идентификаторами.

0 голосов
/ 18 февраля 2011

Я бы рекомендовал сначала переписать код, чтобы он соответствовал стандартам, что означает замену идентификаторов на значения, т. Е. <option value="1876"> (Кстати, идентификаторы не могут начинаться с цифры http://www.w3schools.com/tags/att_standard_id.asp)

Кроме того, когда вы получаете значение, используйте .val(), поэтому

var y = $('#ryear option:selected').val();

С этими исправлениями посмотрим, не исчезла ли проблема.

Кроме того, мне приходит в голову, что если ваша функция передачи выбора «форсирует» выбор значения в другом поле выбора, которое также имеет тот же обработчик выбора, то могут быть помехи какого-то рода. Я бы рекомендовал, по крайней мере, в целях тестирования, назначать уникальный идентификатор каждому элементу выбора и создавать уникальные функции для каждого.

0 голосов
/ 18 февраля 2011

Я думаю, что это связано с типом данных, а не var y = $('#ryear option:selected').html();

попробуй это var y = $('#ryear option:selected').val(); ||
var y = $('#ryear option:selected').attr('id'); ||
parseInt(y);

...