jQuery возвращает неправильное значение отмеченного переключателя при использовании стилизованных кнопок

0

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

Если я удалю класс pretty_rb, который отключит стилизацию, тогда он отлично работает.

Я пытаюсь получить значение с помощью:

jQuery('input[name=tax_account_type]:checked').val();

Мой HTML:

<input type="radio" name="tax_account_type" id="individual" class="pretty_rb" value="0" onclick="updateRegForm();" checked required>
<input type="radio" name="tax_account_type" id="business" class="pretty_rb" value="1" onclick="updateRegForm();" required>

Изменить: Fiddle: http://jsfiddle.net/94UtB/2/

  • 0
    Здесь должно быть что-то еще неправильное, так как я могу заставить это работать здесь . Что делает функция updateRegForm() ?
  • 0
    @KellyJAndrews Извините, забыл упомянуть, если я отключу стилизацию для переключателей, то все будет работать нормально (согласно вашему примеру). updateRegForm() - это простая функция AJAX, которая не имеет к этому updateRegForm() отношения.
Показать ещё 4 комментария
Теги:
radio-button
jquery-plugins

1 ответ

3
Лучший ответ

Проблема заключается в том, что ScrewDefaultButtons обертывает input элементы в div а затем скрывает input элемент.
Этот div имеет событие click, которое проверяет правильный скрытый элемент input.
Однако. Поскольку у вас есть событие onClick ваше событие запускается до изменения.
Вот почему вы получаете old ценность.

Чтобы решить эту проблему, добавьте следующий код после вызова функции screwDefaultButtons:

$('.styledRadio').on('click', updateRegForm);

или

$('.pretty_rb').on('click', updateRegForm);

Не забудьте удалить атрибут onlick из HTML.

  • 0
    Я думал, что это может быть то, что происходит, но я не видел событие, где вы могли бы запустить функцию после запуска события check , поэтому не знал, как ее решить.
  • 0
    Спасибо за это, но зачем мне удалять атрибут класса из html?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню