В моем приложении Ruby on Rails у меня есть форма, которая выглядит так:
= simple_form_for @reservation do |f|
= f.input :terms, as: :boolean
= f.submit t('reservation.next'), class: "btn btn-default pull-right"
В моей модели у меня есть условия виртуального атрибута:
validates :terms, acceptance: true, on: :create, allow_nil: false
attr_accessor :terms
Теперь, когда пользователь не принимает условия, приложение переадресовывает его обратно с ошибкой flash. Но теперь, когда пользователь не принимает правила, кнопка отправки отключена. Есть ли способ сделать это с помощью JQuery? Заранее спасибо.
Что-то вроде этого должно выполнить эту работу. Вам нужно будет изменить селектора jQuery в этом примере (#your_reservation_terms_checkbox
и #your_submit_button
), чтобы правильно соответствовать фактическому id
этих элементов.
= simple_form_for @reservation do |f|
= f.input :terms, as: :boolean
= f.submit t('reservation.next'), class: "btn btn-default pull-right"
:javascript
$(document).ready(function(){
$('input#your_reservation_terms_checkbox').on('change', function(){
checked = $(this).is(':checked');
$('#your_submit_button').prop('disabled', !checked);
$('.warning-message').remove()
if(!checked){
$('#your_submit_button').before('<span class="warning-message">You must accept the terms</span>');
}
});
});
Предполагая, что флажок "принять регулирование" установлен, тогда напишите логику, чтобы включить и отключить кнопку отправки при щелчке по галочке с помощью jQuery:
Используйте уникальный id
для checkbox
и button
отправки.
<input type="checkbox" class="check" value="accept" id="accept"/>accept regulation
<input type="submit" value="click me" id="submitBtn" disabled/>
$(document).ready(function(){
$('#accept').on("change",function(){
var checkboxChecked = $(this).is(':checked');
$('#submitBtn').prop('disabled',!checkboxChecked);
});
});
Вот пример примера о том, как это сделать
<input type="checkbox" id="checkbox_id" />
<input type="button" id="button_id" value="Submit" />
$('#checkbox_id').click(function() {
if ($(this).is(':checked')) {
$('#button_id').attr('disabled', 'disabled');
} else {
$('#button_id').removeAttr('disabled');
}
});