无法在haml文件中通过javascript添加select-all按钮

问题描述 投票:0回答:1

我是javascript的新手,并且在.haml文件中遇到此代码的问题:

:javascript
  $(document).click(function(){
    var originalState = true;
    $('form.splashpage .inputs:first .input.click input[type=button]:not(.select-all)').each(function() {
      originalState = originalState && $(this).is(':checked');
    });
    $('form.splashpage .select-all').prop('checked', originalState);

    $('form.splashpage').on('change', '.select-all', function(e) {
      var value = $(this).is(':checked');
      var parent = $(this).parents('.inputs:first');
      parent.find('.input.checkbox input[type=checkbox]').prop('checked', value);
    });
});

%li
   .boolean.input.optional.form-group.checkbox
      %span.form-wrapper
        %label.control-label
          %input.select-all{ type: 'button' }

完整的文件如下:

.row
  .col-md-12
    .page-header
      %h1 page_name

= semantic_form_for(@page_name, url: admin_conference_page_name_path(@conference.short_title)) do |f|
  .row
    .col-md-12
      = f.inputs name: 'Components' do
        %ul.fa-ul
          %li
            %li
   .boolean.input.optional.form-group.checkbox
      %span.form-wrapper
        %label.control-label
          %input.select-all{ type: 'button' }
          %li
            = f.input :include_cfp, label: 'Display call for papers and call for tracks, while open', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_cfp) }
          %li
            = f.input :include_program, label: 'Display the program', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_program) }

            %ul.fa-ul
              %li
                = f.input :include_tracks, label: 'Include confirmed tracks', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_tracks) }
              %li
                = f.input :include_booths, label: 'Include confirmed booths', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_booths) }

          %li
            = f.input :include_registrations, label: 'Display the registration period', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_registrations) }

          %li
            = f.input :include_tickets, label: 'Display tickets', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_tickets) }

          %li
            = f.input :include_venue, label: 'Display the venue', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_venue) }

          %li
            = f.input :include_lodgings, label: 'Display the lodgings', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_lodgings) }

          %li
            = f.input :include_sponsors, label: 'Display sponsors', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_sponsors) }

          %li
            = f.input :include_social_media, label: 'Display social media links', input_html: { checked: params[:action] == 'new' || @page_name.try(:include_social_media) }

      = f.inputs name: 'Access' do
        %ul.fa-ul
          %li
            = f.input :public, label: 'Make this page public?'
  .row
    .col-md-12
      %p.text-right
        = f.submit 'Save Changes', class: 'btn btn-primary'

    :javascript
  $(document).click(function(){
    var originalState = true;
    $('form.page_name .inputs:first .input.click input[type=button]:not(.select-all)').each(function() {
      originalState = originalState && $(this).is(':checked');
    });
    $('form.page_name .select-all').prop('checked', originalState);

    $('form.page_name').on('change', '.select-all', function(e) {
      var value = $(this).is(':checked');
      var parent = $(this).parents('.inputs:first');
      parent.find('.input.checkbox input[type=checkbox]').prop('checked', value);
    });
});

实际上,我想将select-all checkbox转换为select-all button。但我不知道我正在制造什么样的错误。任何帮助或建议将不胜感激。谢谢。

javascript ruby-on-rails select haml
1个回答
0
投票

我修复了使用javascript代码:

:javascript
  $(document).ready(function(){
    var clicked = true;
    $('#selectAll').click(function(event) { 
      var parent = $(this).parents('.inputs:last');
      parent.find('.input.checkbox input[type=checkbox]').prop('checked', clicked);             
      });

  });
© www.soinside.com 2019 - 2024. All rights reserved.