Mam stronę z normalnym formularzem z przyciskiem przesyłania i jQuery, która wiąże zdarzenie przesyłania formularza i zastępuje je e.preventDefault()
i uruchamia AJAX dowództwo. Działa to dobrze po kliknięciu przycisku przesyłania, ale po kliknięciu linku z onclick='document.formName.submit();'
wydarzenie nie zostanie przechwycone przez procedurę obsługi zdarzeń formularza AJAX. Wszelkich pomysłów, dlaczego nie lub jak to działa bez wiązania wszystkich elementów?Przesłanie jQuery formularza nie działa, gdy zgłoszenie jest wywoływane przez javascript na elemencie
Odpowiedz
Kilka sugestii:
- nadpisać funkcję, aby zrobić swoje zło licytacja
var oldSubmit = form.submit;
form.submit = function() {
$(form).trigger("submit");
oldSubmit.call(form, arguments);
}
- Dlaczego nie wiążą wszystkich <a> tagów złożyć? Wtedy nie trzeba robić żadnych łatanie małpa, a może to być tak proste, jak to (zakładając, wszystkie linki są wewnątrz tagu formularza):
$("form a").click(function() {
$(this).parents().filter("form").trigger("submit");
});
Jeśli korzystasz z jQuery, powinieneś załączać zdarzenia za pomocą własnego event mechanism, a nie za pomocą właściwości "on" (onclick itp.). Ma również własną metodę wyzwalania zdarzeń, o wdzięcznej nazwie "trigger", której należy użyć w celu aktywowania zdarzenia przesyłania formularza.
Zgadzam się - nie używaj natrętnego kodu JavaScript w swoim kodzie, tylko sprawia, że bóle głowy, jeśli mieszanie dyskretne JavaScript z nim. –
Dzięki Eran
Używam tego wiążącego kodeksu
this._form.bind('submit', Delegate.create(this, function(e) {
e.preventDefault();
this._searchFadeOut();
this.__onFormSubmit.invoke(this, new ZD.Core.GenericEventArgs(this._dateField.attr('value')));
});
zdarzenie ale jest dziedzictwo kod onclick
na HTML i wolałbym go nie zmieni ponieważ istnieje tak wiele linków.
Problem polega na tym, że wywołanie metody submit() formularza nie spowoduje aktywacji zdarzenia. Podobnie jest z metodą input focus() - po prostu nie przechodzą przez zwykły łańcuch delegowania zdarzeń. –
Ten pracował dla mnie:
Producent obojętne przycisk, ukryć prawdziwy przedstawić z imienia przedstawienia,
a następnie:
$("#mySubmit").click(function(){
$("#submit").trigger("click"); });
ustawić obsługi zdarzeń na manekinie do uruchomienia kliknij na fo przycisk rm submit. pozwól przeglądarce dowiedzieć się, jak przesłać formularz ... W ten sposób nie musisz preventDefault
na formularzu submit, w którym zaczyna się problem.
To wydawało się rozwiązać problem.
- 1. Przesłanie nie działa?
- 2. uniemożliwiający przesłanie formularza, gdy pole wejściowe jest puste
- 3. Okno dialogowe jQuery nie pojawia się, gdy jest wywoływane
- 4. Zgłoszenie formularza jquery po przesłaniu pliku
- 5. przesłanie formularza w iframe z JavaScript
- 6. Jquery .on() zgłoszenie zdarzenia
- 7. Odwołanie nie jest wywoływane
- 8. jQuery działa w Firefoksie, gdy Firebug działa, nie działa, gdy Firebug NIE działa
- 9. jQuery: fadeout() nie działa na pozycjonowanym absolutnie elemencie po załadowaniu przez AJAX
- 10. Wtyczka JQuery nie działa, gdy jest używana wielokrotnie na stronie
- 11. Zdarzenie touchenter nie jest wywoływane
- 12. axios post request przesłanie danych formularza
- 13. Resetowanie formularza nie działa przy użyciu jquery
- 14. Funkcja kliknięcia jQuery działa tylko na pierwszym elemencie.
- 15. Przesyłanie formularza jQuery Firefox nie działa
- 16. Eksploatacja przez jQuery Mobile nie działa
- 17. mouseExited nie jest wywoływane, gdy mysz opuszcza trackingArea podczas przewijania
- 18. mechanizm sprawdzania poprawności formularza jQuery nie działa poprawnie na równych
- 19. Potwierdź przesłanie formularza za pomocą pliku bootbox.confirm()
- 20. Persistent zgłoszenie działa aplikację na Androida 4.3
- 21. Zdarzenie wywoływane przez klawisz Backspace, ale nie przycisk usuwania
- 22. Narzędzie przeciągane jQuery UI nie działa na nowo utworzonym elemencie DOM
- 23. React.js: przesłanie formularza programowo nie wyzwala zdarzenia onSubmit
- 24. Przesłanie formularza w ramce iframe i przekierowanie całej strony
- 25. jQuery Mobile nie działa podrzędny javascript
- 26. Jak złapać funkcje JavaScript, które są wywoływane?
- 27. Skrypty nie są wywoływane
- 28. Metoda WWW nie jest wywoływana przez jquery z funkcji javascript
- 29. Minitest #setup i #outardown nie są wywoływane, gdy test uruchamiany jest przez Rake
- 30. Problem z rozmyciem jquery() na elemencie Div
Co oznacza "formularz" w pierwszym przykładzie? – tishma
@tishma Element DOM formularza, podobnie jak w tym przykładzie: http://stackoverflow.com/a/931482/1048862 – Matt
To nie zadziała w niektórych starszych przeglądarkach. Właściwość JS .submit jest przyczyną. Użyj $(). Submit (function() {...}); zamiast. –