Есть ли способ заполнить значения формы нажатием кнопки или опубликовать запрос без отправки формы? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь заполнить поле пароля в форме с помощью щелчка (onClick = "autoFill ());), как показано в приведенном ниже коде.

Клик работает без ошибок, но в поле пароля ничего нет.

Я попытался использовать другой тип form () с document.getElementsByClassName ("input-wrapper") и получить те же результаты.

P.S. Это дополнительный шаг к цели. Конечная цель - заполнить поле пароля с помощью управляемого JS-плагина.

<% provide(:title, "Log in") %>
<div  class="center jumbotron">
<div class="row">
<div class="col-md-6 col-md-offset-3">
 <%= form_for(:session, url: login_path) do |f| %>

  <%= f.label :email %>
  <%= f.email_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control'  %>

  <%= f.submit "Log in", class: "btn btn-primary" %>
<% end %> 

    <a href="#" onClick="autoFill(); return true;" >Click to 
Autofill</a>

     <script type="text/javascript">
function autoFill() {
document.getElementsByClassName("form-control").password_field = 
"My Text Input";
  }
</script>

</div>

</div>

Я ожидаю, что поле пароля заполнится "Моим вводом текста", но с полем пароля ничего не происходит, и URL получает # при клике.

1 Ответ

0 голосов
/ 27 июня 2019

Рассматривали ли вы использование jQuery? Я немного подправил твой код

<% provide(:title, "Log in") %>
<div class="center jumbotron">
  <div class="row">
    <div class="col-md-6 col-md-offset-3">
      <%= form_for(:session) do |f| %>

        <%= f.label :email %>
        <%= f.email_field :email, id: 'my-email-field-id', class: 'form-control' %>

        <%= f.label :password %>
        <%= f.password_field :password, id: 'my-password-id', class: 'form-control'  %>

        <%= f.submit "Log in", class: "btn btn-primary" %>
      <% end %>
    </div>
  </div>

  <%= button_tag 'Click to Autofill', id: 'auto-fill-link' %>
</div>

<script>
  $(function(){
    autoFill();

    function autoFill() {
      $('#auto-fill-link').click(function(){
        $('#my-password-id').val('My Password Input');
        $('#my-email-field-id').val('My Email Input')
      });

    }
  })
</script>

Убедитесь, что в вашем gemfile есть gem 'jquery-rails’. Затем запустите bundle Убедитесь, что ваш файл application.js содержит //= require jquery и //= require jquery_ujs

//= require rails-ujs
//= require jquery
//= require jquery_ujs
//= require activestorage
//= require turbolinks
//= require_tree .

Перезагрузите сервер

Возможно, вы захотите поместить JS в теги скрипта в реальные файлы .js в другом месте для аккуратности

...