2012-09-22 6 views
49

Czy ktoś może mi wyjaśnić, co oznacza ten błąd? Byłbym wdzięczny za każdą pomoc w tym zakresie.Właściwość 'submit' obiektu # <HTMLFormElement> nie jest funkcją

<form class="form" id="form" action="/mailer.php" method="post"> 

Kod Jquery, którego używam, jest właśnie taki.

$('#form').submit(); 
+1

Spróbuj użyć '$ ('# forma') [0] .submit();' 'dokument lub po prostu .getElementById ("formularz"). submit(); '.. BTW, twój aktualny kod powinien zadziałać. – techfoobar

+2

Wygląda na to, że na Twojej stronie występuje konflikt, prototyp/mootools/...? – undefined

+0

Spróbuję pierwszej opcji w jednej chwili. Druga odpowiedź ... jquery.min.js –

Odpowiedz

138

Sprawdź formularz, aby zobaczyć, czy jest tam HTMLInputElement z ID lub nazwy jest submit.

Spowoduje to ustawienie właściwości submit do HTMLFormElement, więc funkcja submit który jest w prototypu elementu formularza nie może być wykonana.

Przykład:

<form class="form" id="form" action="/mailer.php" method="post"> 
    ​<input type="button" name="submit" value="go"/> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

JS:

​console.log($("#form")[0].submit)​;​ // will be the button element, not the submit function. 

.submit() metoda jQuery wywoła .submit() na oryginalnym elemencie DOM, więc błąd będzie się działo.

+3

Istnieje "fałszywe" prześlij input type = "button" name = "submit", więc ... usunę nazwę i zobaczę, czy to działa. –

+0

@AndrewAllenWest Tak, to musi być powód. – xdazz

+0

To załatwiło sprawę! Dziękuję bardzo. –

6

Jeśli masz przycisk lub dane wejściowe o nazwie submit lub id submit, widziałem błędy w IE. Upewnij się, że twoje dane wejściowe są poprawnie nazwane. Oto artykuł na ten temat: http://bugs.jquery.com/ticket/1414

27

xdazz wyjaśnił dobrze sprawę.

Można użyć rodem złożyć metodę HTMLFormElement aby obejść problem:

HTMLFormElement.prototype.submit.call($('#form')[0]); 
+3

Dzięki stosy! To działało dla mnie! Jak na ironię ta odpowiedź nie ma głosów w górę. – JohnnyQ

+1

Dzięki za obejście problemu! Wspaniale jest wykonywać formularze na konsoli, jeśli mają ten problem ... Tak było w przypadku formularza komentarzy IT ... –

+0

Jest to dobra alternatywa, jeśli rozwiązanie Xdazza nie wystarczy! – Manatax