Проблема в основном обозначена в заголовке.
Сайт находится здесь: http://tinyurl.com/3abbcsr
Я использую пользовательский код радио / флажка из available_custom_designed_checkbox_radio_button_inputs_styled_css_jquery /
Это код их кода ( Я изменил его, чтобы позволить определять другой стиль в зависимости от заголовка метки )
$(this).each(function(i){
if($(this).is('[type=radio]')){
var input = $(this);
// get the associated label using the input's id
var label = $('label[for='+input.attr('id')+']');
var labelTitle = label.attr('title');
// wrap the input + label in a div that has class "custom-radio-LabelTitle"
$('<div class="custom-radio-' + labelTitle + '"></div>').insertBefore(input).append(input, label);
// find all inputs in this set using the shared name attribute
var allInputs = $('input[name='+input.attr('name')+']');
//bind custom event, trigger it, bind click,focus,blur events
input.bind('updateState', function(){
if (input.is(':checked')) {
if (input.is(':radio')) {
allInputs.each(function(){
$('label[for='+$(this).attr('id')+']').removeClass('checked');
});
};
label.addClass('checked');
}
else { label.removeClass('checked checkedHover checkedFocus'); }
})
.trigger('updateState')
.click(function(){
$(this).trigger('updateState');
})
}
});
Насколько я понимаю, их код в основном находит все радиовходы, а затем определяет специальный триггер, называемый updateState . Затем они запускают его внутри функции щелчка входа.
Таким образом, каждый раз при щелчке по входной радиокнопке updateState является триггером, который, в свою очередь, устанавливает класс для метки этой радиокнопки. Изменение класса изменяет CSS метки.
При щелчке по метке также выбирается вход, для которого эта метка (запускается функция JQuery .click ()).
Я установил все мои входные радиокнопки на дисплей: нет . Таким образом, пользователь только нажимает на ярлык, и тайно он нажимает переключатель.
.click () не будет работать для ввода, если вход скрыт.
Я предполагаю, что есть два способа пройти это:
a) вместо того, чтобы функция радио .click () вызывала ручное состояние, функция метки .click () обрабатывает его. Хотя это может не сработать, потому что тогда кнопка переключателя не может быть нажата (что портит мою форму)
b) при нажатии на метку, активируйте функцию щелчка радио вручную. Однако это может привести к тому, что он будет запущен дважды в каждом браузере, кроме IE. Я не знаю, как обратиться к радио лейбла и не дать ему дважды сработать.