2014-01-09 3 views
0

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

Edit: Fiddle: http://jsfiddle.net/94UtB/2/

+0

Здесь должно быть что-то неправильное, так как я могу заставить это работать [здесь] (http://jsfiddle.net/kellyjandrews/CC2G5/). Что делает функция 'updateRegForm()'? –

+0

@KellyJAndrews Извините, забыли упомянуть, если я отключу стиль для переключателей, тогда он отлично работает (согласно вашему примеру). 'UpdateRegForm()' - просто простая функция AJAX, которая на самом деле не имеет отношения к этому. – Brett

+0

Получил это - вы можете опубликовать фактический интерпретированный DOM, тогда - в основном, плагин делает что-то, что вызывает проблемы? –

ответ

3

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

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

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

или

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

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

+0

Я думал, что может быть, что происходит, но я не видел события, в которых вы могли запускать функцию после того, как событие 'check' запустилось, поэтому не знаете, как ее решить. – Brett

+0

Спасибо за это, но почему я хочу удалить атрибут класса из html? – Brett

+0

Извините ... Мне не нравится класс. –

Смежные вопросы