Приложение ruby ​​on rails глючит при использовании Chrome Auto Complete - PullRequest
0 голосов
/ 04 июля 2019

У меня странная ошибка, которая зависает, или делает мое приложение непригодным к использованию, или останавливается на минуту.

Итак, у меня есть 2 формы рядом для выставления счетов и одна для отправки, и в ней есть выпадающий списоккоторый использует библиотеку select2 .Когда пользователь выбирает этот выпадающий список, автозаполнение Chrome показывает до.Это перекрывает выпадающий список select2.вот изображение enter image description here

, поэтому проблема здесь в том, что пользователь использует этот выпадающий список для выбора страны и использует автозаполнение Chrome вместо выпадающего списка select2 и нажимает клавишу вводаформа справа заполняет страну и зависает или зависает приложение.также, когда они выбирают страну или штат, он отправляет запрос на получение на сервер.

Я попытался:

1) отключить автозаполнение Chrome в настройках.это работает без проблем.форма справа не будет обновлена ​​(поэтому я пришел к выводу, что это хром)

2) Я добавил html: {autocomplete: 'off'}, но это не работает, я не знаю почему.

вот форма:

<%= form_for [:admin, @corporate_account], html: { autocomplete: "off" } do |f| %>
    <fieldset data-hook="new_property">

      <div class="row">
        <div class="col-md-12">
          <%= render partial: 'form', locals: { f: f } %>
        </div>
      </div>
      </div>
        <div class="col-md-12">
          <%= render partial: 'address_form', locals: { f: f } %>
        </div>
      </div>

      <div class="form-actions">
        <%= render partial: 'spree/admin/shared/new_resource_links' %>
      </div>
    </fieldset>
<% end %>

ОБНОВЛЕНИЕ

Я обнаружил, что когда я нажимаю ввод с автозаполнением Chrome, он отправляет запрос GET.но с обычным выпадающим списком из приложения это не так, я думаю, что автозаполнение хромов после нажатия клавиши ввода отправляет форму.hhmmmmmmmmm

1 Ответ

0 голосов
/ 09 июля 2019

Так что мы используем select2 для наших поисков. он использует jquery и идентификаторы добавляются динамически. Я обнаружил, что скрипт прикрепляет идентификатор динамически. он не был в файле .js он был внутри файла .erb. Я добавил этот .js скрипт в .erb файл

<% content_for :head do %>
  <%= javascript_tag do %>
    $(document).ready(function(){
      $('span#<%= s_or_b %>country .select2').on('change', function() { update_state('<%= s_or_b %>'); });

      <%# bellow this comment the code that I added %>
      <%# this IDs are gnerated dynamically by select2 %>
      const countryID = $('span#<%= s_or_b %>country .select2 .select2-search input').attr('id')
      const stateID = $('span#<%= s_or_b %>state .select2 .select2-search input').attr('id')

      <%# add the type attribute search so autocomplete can be toggled on and off %>
      $(`#${countryID},#${stateID}`).attr('type', 'search')

      <%# on focus set the autocomplete attribute off %>
      $(`#${countryID},#${stateID}`).on('focus', function(){ 
        $(`#${countryID},#${stateID}`).attr('autocomplete', 'off')
       }) 

    });
  <% end %>
<% end %>

поэтому, когда я фокусируюсь на поиске входных сигналов автозаполнение больше не работает. аминь за это.

...