2016-06-18 6 views
0

Ich habe folgende Coffee Funktion in einer Schiene app

if $(".my-form").length 
    $(".my-form").submit (event) -> 
    values = {} 
    $.each $(this).serializeArray(), (i, field) -> 
     values[field.name] = field.value 
     return 
    console.log(values) 

Die Konsole zeigt, dass auf dem Formular einzureichen, diese Funktion zu starten 4 mal wird.

Nach meinem Wissen gibt es keinen anderen Code, der mit diesem Formular interagieren würde. Gibt es einen offensichtlichen Grund, warum diese Funktion mehrmals ausgeführt werden würde? Was sollte ich suchen, um das zu debuggen? Und was kann ich tun, um das zu verhindern?

+1

Sie die '.submit Rufst()' Handler mehrmals? Versuche es mit '$ (". My-form "). Unbind ('submit'). Bind ('submit' ...' –

+0

nein (zumindest denke ich nicht). Das Formular wird mit der Maus gesendet Klicken Sie auf einen Absenden-Button.So ist es möglich, dass dies als mehrere Anmeldungen registriert? Ich experimentiert mit Hinzufügen von $ (this) .unbind ("submit") 'zu der oben genannten Funktion zu stoppen mehrere unterwirft, aber ohne Wirkung –

+1

The Der Handler wird wahrscheinlich mehrmals registriert.Verwenden Sie '$ (". my-form "). unbind ('submit'). bind ('submit', function (event) ...' - * Dies ist nicht in der coffeescript-Syntax *. Kann das sein - '$ (". My-form "). Unbind ('abschicken'). Bind 'submit', (event) ->' –

Antwort

0

Danke an Shaunak D für diese Antwort.

Ein Mausklick auf die Schaltfläche zum Senden des Formulars wird angezeigt, um den Handler .submit() mehrmals aufzurufen.

unbind("submit") dies verhindert (vorausgesetzt, es ist an der richtigen Stelle genannt!)

Die korrekte Syntax ist:

$(".my-form").unbind('submit').bind 'submit', (event) -> 
    #actions....