2017-09-29 3 views
0

Ich stoße derzeit auf ein Problem, bei dem ich ein Formular habe, bei dem das standardmäßige Übermittlungsverhalten unterbrochen und durch einen Ajax-Anruf ersetzt werden muss. Mein derzeitiges Setup scheint für alle anderen Desktop- und Mobilgeräte (einschließlich iPhones!) Zu funktionieren, schlägt aber bei iPads durchgehend fehl. Insbesondere scheint .submit() von jQuery überhaupt nicht zu triggern. Einen alert() Anruf zwischen den event.preventDefault(); und return false; Anweisungen zu platzieren, scheint anzuzeigen, dass der Codeblock nie erreicht wird. Ich habe auch versucht, den Submit-Button zu einem normalen Button zu wechseln und auf Klick zu übermitteln, und ohne Syntax auf die on('submit', functon(){...});-Syntax umzuschalten.Warum scheint das Ereignis jQuery .submit() nicht auf iPads auszulösen?

Irgendwelche Lösungen oder Ideen zu möglichen Ursachen?

HTML-Struktur:

<form id="targetForm" action=""> 
    <!--inputs go here--> 
    <input type="submit" value="Submit"/> 
</form> 

Javascript Struktur:

<script> 
    $(document).ready(function() { 
     $('#targetForm').submit(function(event) { 
      event.preventDefault(); 
      alert('test'); 
      //Ajax call goes here 
      return false; 
     }); 
    }); 
</script> 
+0

[Funktioniert gut auf meinem iPad] (http://output.jsbin.com/cobetimahu) –

+0

@ T.J.Crowder Würde es Ihnen etwas ausmachen, Software-Versionen zur Verfügung zu stellen? Ich würde die Gelegenheit zum Vergleich sehr schätzen. –

+0

iOS 10.3.3 ..... –

Antwort

0

Es stellt sich heraus, dass das Problem in einer nicht verwandten Funktion existiert außerhalb des $(document).ready() Ereignis definiert, in dem eine Variable Erklärung nicht durch ein beendet wurde Semikolon und fehlte das Schlüsselwort var. Es hat keine Fehler auf anderen Geräten verursacht, aber die gesamte externe JS-Datei konnte nicht ausgeführt werden.

Bearbeiten, weitere Informationen: Es scheint ein Problem mit der JS-Engine auf iPads verwendet werden. Aus irgendeinem Grund verhindert jedes kleine technisch inkorrekte Syntaxproblem (es schlägt sogar fehl, wenn Sie Standardparameterwerte aus irgendeinem Grund verwenden!) Irgendwo in Ihrer Skriptdatei, dass JS nicht ausgeführt wird. Ihre Engine scheint sehr streng zu sein, sehr genau die sehr spezifischen Syntax-Standards zu erfüllen und bestraft Sie streng mit fehlerhaften Fehlern, wenn Sie sich ihnen nicht perfekt anpassen.

Kurz gesagt: Mein Login-Problem ist gelöst.

Verwandte Themen