2016-07-19 9 views
2

Ich habe ein Formular für die Anmeldung einreichen, die wie folgt aussehen. Es scheint auch auf meinem Android-Handy zu funktionieren. Aber ich habe es sowohl auf einem iPad als auch auf einem iPhone ausprobiert und funktioniert auch nicht.jQuery stopPropagation nicht auf Arbeitstisch/mobiler

Das Problem ist, dass, wenn ich das Formular nur ich die JSON-Daten erhalten auf dem Bildschirm wie folgt ausgedruckt:

{"login":true,"redirect":"https://frontpageurl"} 

Aber es soll auf der Titelseite URL umleiten.

Also, beim Anmelden, auf einem iPhone oder einem iPad, funktioniert die Umleitung auf die Startseite nicht.

Ich versuchte zuerst e.preventDefault(), die in anderen ähnlichen Teilen dieses Projekts gut zu funktionieren scheint. Dann habe ich versucht e.stopPropagation() und e.stopImmediatePropagation(). Nichts davon scheint etwas zu ändern.

+0

Nur als Randnotiz, wenn Sie eine 'Form' mit ID und Klasse gleich' Login-Form' haben, wird dieser Submit-Handler zweimal ausgelöst. Jetzt, ohne irgendwelche relevanten MCVE zu sehen, können wir nur raten. Wie auch immer, siehe Jais Antwort, Sie wollen wahrscheinlich nicht die Verbreitung stoppen, sondern Standardverhalten verhindern –

Antwort

1

Ich bezweifle es, dass es
an Ihrem Computer arbeiten und Ihr Android-Handy ist.

Wie Sie e.stopPropagation(); im submit Ereignis verwenden, die einen $.ajax() Anruf hat, und ich muss sagen, dass nichts damit zu tun hat. Wenn Sie die Übermittlung vornehmen, wird Ihr Formular übermittelt.

Wenn Sie Ajax verwenden, dann ist die erste Sache, die Sie befolgen müssen, die Formularübermittlung zu stoppen, wie Sie es verwenden. Sie können das mit event.preventDefault(); tun. Also, besser, es zu benutzen:

handleLoginSubmit: function() { 
    $('#login-form, .login-form').submit(function (e) { 
     e.preventDefault(); 
     // other code as is 
}, 

über e.stopPropagation(); ist, dass es verwendet wird, um das Ereignis zu Blase zu stoppen in der DOM-Struktur bis zu keinem Fall auszuführen auf übergeordnete Elementen gebunden. In Ihrem Fall scheint es mir nicht so zu sein, wie sich die Form präsentiert.

+0

Danke für Ihre Kommentare Jungs! Zuerst habe ich tatsächlich e.preventDefault() anstelle von e.stopPropagation() verwendet, aber ich fing an, diesen Fehler zu bekommen, bevor ich ihn änderte. Also, auch wenn ich e.preventDefault() verwende, funktioniert dieses Formular noch nicht auf einem iPhone oder einem iPad. Ich bekomme nur noch die JSON-Daten auf dem Bildschirm ausgedruckt, anstatt auf die Titelseite umgeleitet zu werden. Irgendwelche Ideen, was dieses Verhalten verursachen könnte? Danke nochmal! – schwe

Verwandte Themen