2017-02-21 5 views
0

Мне нужно знать, был ли пользователь нажат на уже проверенное радио или он сделал новый выбор. Теперь я обнаруживаю это через комбинацию событий «фокус», «щелчок» и «изменение» (сохраняйте старое значение в «фокусе» и сравнивайте его с текущим в «щелчке» или «изменении», чтобы обнаруживать и обрабатывать клики, чтобы уже проверять радио).Есть ли способ получить предыдущее значение радио в обработчике событий «click» или «change»?

Просто чтобы уточнить: я не могу сохранить предыдущее состояние в обработчике кликов, потому что я не мог получить начальное состояние здесь; или «focus + click» или «load + (prev) нажмите + клик»;

Но это выглядит как хак для меня, и я полагаю, что есть более прямой путь, чтобы сделать это, используя встроенные функции JQuery, , используя только один обработчик событий. Есть ли что-то вроде этого?

Заранее благодарен!

+1

Если использование одного обработчика событий является обязательным, как вы упомянули, почему бы не использовать только mousedown? Проверьте, что это «проверено», это предыдущее значение. Для радио новое значение будет также «проверено». Для флажка новое значение будет противоположно старому. –

ответ

1

Используйте mousedown как @Bukent Vural.

Получить текущее значение перед изменением с помощью $('input[name=test]:checked').val();, где «тест» - это имя ваших радиовходов.

Посмотрите на это JSFiddle.

EDIT

Если вы хотите, чтобы обнаружить метку щелкает, а второй обработчик событий должен быть добавлен:

$('label').click(function() { 
     labelID = $(this).attr('for'); 
     $('#'+labelID).trigger('mousedown'); 
}); 

Проверьте обновленный JSFiddle.

+0

хорошая идея, но, к сожалению, она не работает, если используются ярлыки, поэтому мне нужно щелкнуть метки ярлыков отдельно. https://jsfiddle.net/1Lrf8xjo/ в любом случае, в некоторых случаях эта идея очень полезна. – AlexandrX

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