2014-01-16 3 views
2

На странице веб-форм ASP.NET, где есть какая-либо форма, я не могу отправить с использованием простой javascript, но используя jQuery, я могу представить.

Пример:

[...] 
<head> 
    [...] 
    <script type="text/javascript"> 
    function submitting() { 
     alert('Submitting'); 
     return true; 
    } 
    </script> 
</head> 
<body> 
    <form id="testform" onsubmit="return submitting();"></form> 
    [...] 
</body> 
[...] 

Затем в консоли:

> $('#testform') 
[<form id=​"testform" onsubmit=​"return submitting()​;​">​</form>​] 

Тогда, как ожидается, вызывая .submit() работает, как ожидалось

> $('#testform').submit() 

работает!

Но с помощью document.getElementById:

> document.getElementById("testform") 
<form id=​"testform" onsubmit=​"return submitting()​;​">​</form>​ 
> document.getElementById("testform").submit() 
undefined 

Я считаю, что document.getElementById("testform").submit() фактически вызывает постбэк, но я не знаю, почему она не будет представлять форму, как и ожидалось.

Любые идеи?

+0

'myform.onsubmit()' делает работу, как и следовало ожидать, но почему бы ' myform.submit() 'не запускать onsubmit, а' $ ('# myform'). submit() будет? – BenM

+0

Поскольку jQuery делает это вручную для вас способом, подобным тому, что я делал выше. Не забывайте, что обработчики событий jQuery являются абстракцией от собственной системы обработки событий. –

+0

Weirdness в системе комментариев. Сначала он дважды отправил мой комментарий, затем, когда я удалил один, другой тоже ушел. Во всяком случае, 'myform.onsubmit(); myform.submit(); 'было то, что я разместил выше, так что все имеет смысл. –

ответ

-1

Я считаю, что .submit() - метод/функция jQuery, поэтому он работает только в вашем примере jQuery.

Метод vanillaJS будет .onSubmit (как и другие упомянутые).

Теперь, если вы поместите код внутри обертки JQuery, как это:

$(document.getElementById("testform")) 

(который в основном то, что делает Jquery)

Тогда вы могли бы использовать .submit() как

$(document.getElementById("testform")).submit() 

Я очень редко использую .submit(), так что я не 100% на это, но она выглядит для меня

Надеюсь, это поможет!

+3

Существует также собственный '.submit()' –

+0

Хмм! Я не знал об этом. Благодаря! (Я еще не много работал с формами) – ItsJonQ

2

У меня был один и тот же вопрос и выяснили причину/решения:

<input type="submit"..> имеет id="submit" который является ненужным. Если у вас есть этот идентификатор затем удалить его, и он будет представлять форму с помощью

document.getElementById («testform»). Представить()

+0

Спасибо за подсказку! Я потратил почти три часа на борьбу с тем, почему моя форма не поступала правильно. В моем случае это было 'name = submit' на элементе' ', который * также * помешал jQuery' submit() 'работать. Эти [конфликт DOM] (http://kangax.github.io/domlint/) являются документами в [различных ошибках jQuery] (http://bugs.jquery.com/ticket/1414) – hexalys

+0

Спасибо, искал это также. У меня также был атрибут name, который нужно отправить! –