Если вы хотите, чтобы кнопка отправляла события щелчка, ее нельзя отключать (т. Е. У нее не должно быть атрибута «отключен»).
Если вы хотите, чтобы кнопка отображалась отключена при нажатии acceptCheckbox, то вам нужен другой подход. А именно, вам нужно сделать так, чтобы при проверке acceptCheckbox к обработчику continueButton был прикреплен прослушиватель, который отображает предупреждение и затем предотвращает отправку (с помощью метода warnDefault () события). Когда этот флажок снят, этот слушатель удаляется, и кнопка ведет себя нормально.
Этот порядок действий соответствует принципам шаблон проектирования наблюдателя / события : иногда вы хотите полностью отключить диспетчеризацию событий, что отражает атрибут «disabled», но иногда вы просто хотите поймать событие и не позволяет ему делать то, что он обычно делает, то, что позволяет вам делать warnDefault ().
Вот некоторый код, который, как мне кажется, отражает этот подход, учитывая ситуацию, которая возникла у ОП (которая уже давно решена, но все еще может быть полезна для будущих читателей).
var disabledProceedButtonFn = function(e) {
alert('Please check the "I accept" check box before submitting this form.');
e.preventDefault();
}
var proceedButton = $("input#proceedButton");
var disableProceedButton = function() {
proceedButton.addClass('disabled');
proceedButton.on('click', disabledProceedButtonFn); // add the listener
}
var enableProceedButton = function() {
proceedButton.removeClass('disabled');
proceedButton.off('click', disabledProceedButtonFn); // remove the listener
}
$("input#acceptCheckbox").on('change', function() {
if ($(this).is(':checked')) {
enableProceedButton();
} else {
disableProceedButton();
}
});
disableProceedButton(); // 'Disable' the button on page load
Примечание. Вам потребуется CSS, который делает кнопку отключенной, если ей присвоен класс «disabled». Некоторые CSS-фреймворки поддерживают это из коробки, например Twitter Bootstrap.
Я знаю, что это старая ветка, но я этим утром столкнулся с этой самой проблемой и подумал, что это может помочь будущим читателям.