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

Не удалось отправить() `html-форму после перехвата отправки с помощью javascript

Я пытаюсь перехватить представление формы, чтобы изменить значение метки keywords.

У меня есть следующий код:

<HTML>
<FORM name="searchForm" method="get" action="tmp.html" >
<input type="text" name="keywords" />
<input type="button" name="submit" value="submit" onclick="formIntercept();"/>
</FORM>
<SCRIPT language="JavaScript">
document.searchForm.keywords.focus();
function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    f.submit();
};
</SCRIPT>
</HTML>

Когда я запустил это в chrome и нажал кнопку отправки, метка ключевых слов изменится на boo, но консоль javascript говорит:

 Uncaught TypeError: Property 'submit' of object <#an HtmlFormElement> is not a function.

Как я могу отправить форму с помощью манипулируемых ключевых слов?

4b9b3361

Ответ 1

<html>
<head></head>
<body>
<form name="searchForm" method="get" action="tmp.html" onsubmit="formIntercept(this);">
<input type="text" name="keywords" />
<input type="submit" name="submit" value="submit"/>
</form>
<script type="text/javascript">
document.searchForm.keywords.focus();
function formIntercept( form ) {
    form.keywords.value = 'boo';
    //form.submit();
}
</script>
</body>
</html>

Ответ 2

Причиной ошибки при попытке вызова form.submit() является то, что ваша кнопка отправки называется "отправить". Это означает, что свойство "submit" вашего объекта Form теперь является ссылкой на кнопку отправки, переопределяя метод "submit" прототипа формы.

Переименование кнопки отправки позволит вам вызвать метод submit() без ошибок.

Ответ 3

Проблема заключается в том, что когда какой-либо элемент <input type="submit" name="submit" /> метод submit() не работает. Лучшим решением этой ситуации является изменение имени этого ввода типа ввода на что-то еще, например, кнопка-submit и т.д.

Ответ 4

См. jQuery . submit().

$("form").submit( function() {
   // TODO tweak your form data before it gets sent
});

Ответ 5

Просто измените имя кнопки отправки, и оно будет работать!

Ответ 6

Крис Батлер хорошо объяснил проблему.

Вы можете использовать собственный метод submit HTMLFormElement для решения проблемы. В вашем случае:

function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    HTMLFormElement.prototype.submit.call(f);
};

Ответ 7

нашел, что это очень полезно, ошибка была вызвана другим элементом в форме с именем = submit после переименования document.getElementById('myform').submit()