Форма, не отправляющая с JS

find $directory -type f -name "*.in"|grep $substring
6
задан Nicholas Kreidberg 24 June 2009 в 00:04
поделиться

4 ответа

Вкратце: измените идентификатор вашей кнопки отправки на что-то иное, чем «отправить». Также не устанавливайте это значение для name .

А теперь немного более глубокого понимания. В общем случае document.formname.submit - это метод, который при вызове отправляет форму. Однако в вашем примере document.formname.submit больше не метод, а узел DOM, представляющий кнопку.

Это происходит потому, что элементы формы доступны как атрибуты ее узла DOM через их атрибуты name и id . Эта формулировка немного сбивает с толку, поэтому вот пример:

<form name="example" id="example" action="/">
  <input type="text" name="exampleField" />
  <button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>

В этом примере document.forms.example.exampleField - это узел DOM, представляющий поле с именем «exampleField». Вы можете использовать JS для доступа к его свойствам, таким как значение: document.forms.example.exampleField.value .

Однако в этом примере есть элемент формы под названием «отправить», и это кнопка отправки, доступ к которой можно получить с помощью document.forms.example.submit . Это перезаписывает предыдущее значение, которое было функцией, позволяющей отправить форму.

РЕДАКТИРОВАТЬ:

Если переименование поля вам не подходит, есть другое решение. Незадолго до того, как написать это, я оставил вопрос на сайте и получил ответ в виде изящного взлома JavaScript:

function hack() {
  var form = document.createElement("form");
  var myForm = document.example;
  form.submit.apply(myForm);
}

См. Как надежно отправить HTML-форму с помощью JavaScript? для полной информации

]
28
ответ дан 8 December 2019 в 02:22
поделиться

Учитывая, что ваша форма имеет как id , так и имя , вы можете использовать любой из них:

С ] form тега id :

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

С атрибутом form тега name :

document.forms['formname'].submit();
6
ответ дан 8 December 2019 в 02:22
поделиться

Попробуйте следующее:

fnSubmit()
{
  window.print();
  document.getElementById("formname").submit();
}
5
ответ дан 8 December 2019 в 02:22
поделиться

Наиболее вероятная причина заключается в том, что IE путает переменные, идентификаторы и имена JavaScript. Найдите в своем источнике что-нибудь, имеющее название вашей формы.

0
ответ дан 8 December 2019 в 02:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: