Подача данных из нескольких форм в одной форме - PullRequest
0 голосов
/ 08 мая 2020

У меня есть следующий (упрощенный) HTML код, содержащий две формы:

<html>
  <form name="form1" method="get">
    Name: <select name="name" type="text">
      <option selected>A</option>
      <option>B</option>          
      <option>C</option>
      <option>D</option>
    </select>
  </form>

  <form name="form2" method="post" action="../cgi/test.pl">
    City: <input name="city" type="text"/>
    Country: <input name="country" type="text"/>
    <input value="Click Me!" type="submit"/>
  </form>
</html>

Таким образом, при нажатии кнопки отправки выполняется сценарий CGI, и я хотел бы, чтобы сценарий также мог принимать имя, выбранное в раскрывающемся списке первой формы. Любые предложения о том, как этого добиться? В более старых вопросах я просто нашел похожие вещи, но не подходящие для моей проблемы (если я не ошибаюсь ...).

1 Ответ

1 голос
/ 08 мая 2020

Я создал фрагмент, который работает так, как вы хотите, я объяснил в комментариях, где это необходимо. Посмотрите, работает ли это для вас.

<form name="form1" method="get">
  Name:
  <select name="name" type="text" onchange="document.querySelector('#any_id').value = this.value" style="width: 50%">
    <!-- trigger onchange event and change the value of hidden field in the second form -->
    <option selected>A</option>
    <option>B</option>
    <option>C</option>
    <option>D</option>
  </select>
</form>
<hr>
<form name="form2" method="post" action="../cgi/test.pl">
  <!--<input type="hidden" name="any_name" id="any_id" value="Your-default-value"> -->
  <!-- Make this field hidden↓↓, here only for demo purpose-->
  Hidden Field: <input type="text" name="any_name" id="any_id" value="A"><br><br>
  <!-- Give it a default value from your select element(which is A) -->
  City: <input name="city" type="text" /><br><br> Country: <input name="country" type="text" /><br><br>
  <input value="Click Me!" type="submit" />
</form>

Затем получите значение из name скрытого поля (здесь any_name).

...