Подтвердить что ты не робот

Как отправить форму с Javascript, когда входное имя "submit"?

Вопрос: Как вы можете отправить форму с помощью Javascript, если один ввод формы имеет имя submit?

Фон: Я перенаправляю пользователя на другую страницу со скрытой формой HTML. Я не могу изменить имя на (скрытых) входах, так как другая страница находится на другом сервере, и входы должны быть точно такими, какие они есть. Моя форма HTML выглядит следующим образом:

<form id="redirectForm" method="post" action="http://www.example.com/">
  <input name="search" type="hidden" value="search for this" />
  <input name="submit" type="hidden" value="search now" />
</form>

Я использую следующую строку javascript для автоматической отправки формы сегодня:

document.getElementById('redirectForm').submit();

Однако, поскольку имя одного входа "submit" (это не может быть что-то другое или другой сервер не будет обрабатывать запрос), document.getElementById('redirectForm').submit относится к входу, поскольку он переопределяет функцию формы submit().

Сообщение об ошибке в Firefox: Error: document.getElementById("requestform").submit is not a function. Аналогичное сообщение об ошибке в Safari.

4b9b3361

Ответ 1

Стоит отметить. Часто бывает проще просто изменить имя ввода на что-то другое, чем "отправить". Пожалуйста, используйте нижеприведенное решение, только если это действительно невозможно.

Вам нужно получить функцию submit из другой формы:

document.createElement('form').submit.call(document.getElementById('redirectForm'));

Если у вас уже есть тег <form>, вы можете использовать его вместо создания другого.

Ответ 2

Используйте submit() метод из HTMLFormElement.prototype:

HTMLFormElement.prototype.submit.call(document.getElementById('redirectForm'));