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

В моем скрипте приложения Google у меня есть html-страница с формой, атрибут действия которой создается динамически на основе входных значений (с использованием javascript), и я создаю URL-адрес действия с параметрами.После этого я вставляю некоторое входное значение, URL-адрес действия создается правильно (я проверил код), но когда я нажимаю кнопку подтверждения, URL-адрес действия открывается, но без параметров.

Я пытался с помощью метода get, опубликовать, ноу меня есть какой-то результат, новый URL открывается, но без параметра, только с "?"персонаж.Но если я делаю ту же процедуру с атрибутом link и href, она работает нормально.Я заметил, что параметр не прибывает в функцию doget

, включая файл index.html и app.gs

<form id="myForm" action="#">
  <div class="form-row">   
       <div class="col">
          <input type="text" class="form-control" placeholder="Numero" id="numero">
      </div>
    <div class="col">
     <div class="form-group">
      <select id="tipologia" class="form-control">
        <option selected>Tipologia supporto</option>
        <option >concorsi</option>
      </select>
    </div>
    </div>
  </div>
    <button type="submit" class="btn-get-started scrollto">Richiedi assistenza Form</button><!--NOT WORK-->
</form>
      <a href="#" id="btn" class="btn-get-started scrollto">Richiedi assistenza</a><!--WORK-->

<script>
 document.getElementById("tipologia").addEventListener("change", redirect);
 function redirect(){
   var nome =document.getElementById("nome").value;
   var numero =document.getElementById("numero").value;

   var opzioni = document.getElementById("tipologia");
   var selezionato = opzioni.options[opzioni.selectedIndex].value;  
   document.getElementById("btn").href="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec?supporto="+selezionato+"&controllo="+numero+"&nome="+nome;
   document.getElementById("myForm").action ="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec?supporto="+selezionato+"&amp;controllo="+numero+"&amp;nome="+nome;

   }
</script>

function doGet(e) {
 Logger.log(e.parameter.supporto);
  var supporto = e.parameter.supporto;
  var numero= e.parameter.controllo;
  var nome= e.parameter.nome;
}

Я не понимаю, почему параметры исчезают

1 Ответ

0 голосов
/ 31 января 2019

Когда вы отправляете форму с method="GET" (по умолчанию), в качестве основы используется URL-адрес, указанный в action.

Строка запроса (которую вы добавили с помощью JavaScript) удаляется изон и заменяется на созданный с данными из успешных элементов управления формой.

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


Не пытайтесь установить действие с JavaScript (что вы делаете неправильно: свойство DOM action ожидает простой URL, а не кодированный HTML).).

Просто задайте базовый URL-адрес в атрибуте action и присвойте элементам управления формы имена.

<form id="myForm" action="https://script.google.com/macros/s/AKfycbxia-_rMYlvVjrlyGGd7zRcb1CD5hSYe6W-mLldzxY__8I2b3Q/exec">
  <div class="form-row">
    <div class="col">
      <input type="text" class="form-control" name="controllo" placeholder="Numero" id="numero">
    </div>
    <div class="col">
      <div class="form-group">
        <select id="tipologia" name="supporto" class="form-control">
          <option selected>Tipologia supporto</option>
          <option>concorsi</option>
        </select>
      </div>
    </div>
  </div>
  <button type="submit" class="btn-get-started scrollto">Richiedi assistenza Form</button>
</form>

Обратите внимание, ваш код содержит var nome =document.getElementById("nome").value; , но в вашем HTML нет совпадения id.Это может привести к ошибке JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...