Не удается отправить форму программным способом

Не могу заставить мою форму программно отправить форму, несмотря на попытки нескольких способов. Пробовал чистый JS, пробовал и jQuery. Безуспешно.

У меня есть этот тег формы:

<form action="https://docs.google.com/forms/d/13zex8ZsEsnZz3A8uB4jU4oDb5wZfaqqq2Pq2CGlIe6M/formResponse" method="POST" id="ss-form" target="_self" onsubmit="" name="eForm">
    <!--My Form Stuff-->
    <input type="submit" name="submit" value="Submit" id="ss-submit">
</form>

Вот что я пробовал:

/*jQuery*/
$('#ss-form').submit();

/*Javascript*/
document.getElementById('ss-form').submit();
document.eForm.submit();

Ни один из них не работает. Не знаю почему, но я предполагаю, что это как-то связано с тем, что я пытаюсь отправить форму Google. Если я физически нажимаю кнопку «Отправить», все работает нормально.

Любая помощь приветствуется.


person Adjit    schedule 23.06.2014    source источник
comment
Может быть, у вас больше JS, что вызывает проблемы? Вы видите какие-нибудь ошибки?   -  person putvande    schedule 23.06.2014
comment
@putvande нет ошибок консоли. Все остальное работает нормально.   -  person Adjit    schedule 23.06.2014
comment
Ваша форма загружается на страницу, когда вы пытаетесь ее отправить?   -  person Ionică Bizău    schedule 23.06.2014
comment
@Adjit из любопытства, можете ли вы использовать одну из тех строк, которые вы предложили в консоли?   -  person esqew    schedule 23.06.2014
comment
@DaveNewton ничего. Не выдает мне ошибки или что-то в этом роде. Как будто функции там нет.   -  person Adjit    schedule 23.06.2014
comment
@ IonicãBizãu да, форма загружена. В настоящее время использую jQuery $(document).ready() также пробовал (function(){})()   -  person Adjit    schedule 23.06.2014
comment
Где код подачи? Это в обработчике событий? Если вы проверите вкладку «Сеть» в DevTools, заметите ли вы какое-либо упоминание об отправке формы? Еще меня интересует onsubmit="" - это что-то меняет?   -  person Barmar    schedule 23.06.2014
comment
Невозможно воспроизвести: jsfiddle.net/LZkAj   -  person Ionică Bizău    schedule 23.06.2014
comment
@ IonicãBizãu добавил живой пример   -  person Adjit    schedule 23.06.2014
comment
Невозможно воспроизвести ... jsfiddle.net/D7eP9   -  person Flash Thunder    schedule 23.06.2014
comment
Я не вижу ответов ...   -  person Adjit    schedule 23.06.2014
comment
@ IonicãBizãu что вы используете для отправки? когда я пытаюсь даже отправить через консоль, это дает мне ошибку типа, говорящую, что объект не является функцией   -  person Adjit    schedule 23.06.2014
comment
Что ты пытаешься сделать? Просто выкинь этот скрипт из головы, в конец тела ...   -  person Flash Thunder    schedule 23.06.2014
comment
@FlashThunder проблема не в этом. Я пытаюсь отправить форму, как только страница загрузится   -  person Adjit    schedule 23.06.2014
comment
@Barmar не видит упоминания об отправке формы. Также достал _1 _... no dice.   -  person Adjit    schedule 23.06.2014
comment
@esqew Я получаю ошибки типа, говоря, что объект не является функцией, когда я пытаюсь отправить с консоли   -  person Adjit    schedule 23.06.2014
comment
@Adjit Может быть, проблема в браузере. Я отправил ответ.   -  person Ionică Bizău    schedule 23.06.2014
comment
Это потому, что ваше submit input имя submit ... и это ограниченное имя, которое переопределяет form.submit() функцию ... просто переименуйте его во что-то другое, например submiter, и оно будет работать.   -  person Flash Thunder    schedule 23.06.2014


Ответы (1)


Проблема в том, что у вас есть поле (HTMLInputElement) с именем submit в форме. Вот почему document.getElementById('ss-form').submit - это не функция, а объект.

Итак, вы получаете следующую ошибку:

TypeError: object is not a function

Решение состоит в том, чтобы удалить этот элемент. Мы должны быть осторожны, чтобы проверить, считает ли браузер это элементом, а не функцией:

if (typeof document.getElementById('ss-form').submit === "object") {
    document.getElementById('ss-form').submit.remove();
}
document.getElementById('ss-form').submit();
person Ionică Bizău    schedule 23.06.2014
comment
Успешно справился! Я думал, что проверил это ... потому что я помню, что видел эту проблему в другом месте. Излишне говорить, что спасибо за помощь ... потратил слишком много времени на то, чтобы почесать голову над этим. - person Adjit; 23.06.2014
comment
Круто, взгляните и на этот вопрос: stackoverflow.com/q/833032/1420197 - person Ionică Bizău; 23.06.2014
comment
Именно там я увидел это, когда искал, как программно отправить форму. Не знаю, почему я не понял этого раньше. - person Adjit; 23.06.2014