Ruby on Rails, когда пользователь не принимает термины, показывает предупреждение с помощью jQuery

0

В моем приложении 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? Заранее спасибо.

  • 1
    «Принять регулирование» должен быть флажок, затем включите / отключите кнопку отправки при нажатии флажка.
  • 0
    Но когда я делаю $ ('input.btn'). Attr ('disabled', false), моя кнопка отправки исчезает, но я хочу только, чтобы она не нажималась.
Показать ещё 1 комментарий

3 ответа

1
Лучший ответ

Что-то вроде этого должно выполнить эту работу. Вам нужно будет изменить селектора 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>');
      }
    });
  });
1

Предполагая, что флажок "принять регулирование" установлен, тогда напишите логику, чтобы включить и отключить кнопку отправки при щелчке по галочке с помощью 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);
    });
});

DEMO

1

Вот пример примера о том, как это сделать

<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');
        }
    });

DEMO

Ещё вопросы

Сообщество Overcoder
Наверх
Меню