Как отправить форму с помощью Javascript, когда входное имя «отправить»? - PullRequest
19 голосов
/ 04 января 2012

Вопрос: Как вы можете отправить форму с 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.

Ответы [ 2 ]

17 голосов
/ 04 января 2012

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

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

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

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

7 голосов
/ 30 декабря 2015

Использование submit() метод из HTMLFormElement.prototype:

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