Как отправить форму с 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.
Ответы
Ответ 1
Стоит отметить. Часто бывает проще просто изменить имя ввода на что-то другое, чем "отправить". Пожалуйста, используйте нижеприведенное решение, только если это действительно невозможно.
Вам нужно получить функцию submit
из другой формы:
document.createElement('form').submit.call(document.getElementById('redirectForm'));
Если у вас уже есть тег <form>
, вы можете использовать его вместо создания другого.
Ответ 2
Используйте submit()
метод из HTMLFormElement.prototype
:
HTMLFormElement.prototype.submit.call(document.getElementById('redirectForm'));