2016-07-07 11 views
0

Ich habe diesen Code in html.Mein Knockout-Formular verhindert nicht, dass das Ereignis platzt, wodurch das Formular "für echt" gesendet wird

<form method="POST" data-bind="submit: submitComment"> 
    <label for="comment"> 
     <textarea name="comment" data-bind="value: commentTextArea"></textarea> 
     <button type="submit">Submit</button> 
    </label> 
</form> 

und das ist mein Ko-Viewmodel

this.commentTextArea = ko.observable(''); 
this.submitComment = function(formElement) { 
    alert("I'm being posted!"); 
    return false; 
} 

Mein Problem ist, dass, wenn ich senden Sie das Formular der return false; Zeile ignoriert wird, wodurch die Form „für echte“ submittinig. Ich kann überprüfen, dass ich in der submitComment() Methode bin, da die Warnung ausgelöst wird.

Ich habe die KO-Anleitung und einige Beispiele gelesen, aber kein Beispiel sagt sogar, dass ich die return false; Linie brauchen würde.

Ziel ist es, das Ereignis aus der Blase zu verhindern. Dank

+0

versuchen Sie formElement.preventDefault(); –

+0

@MujeebuRahman, hi, ich bekomme Uncaught TypeError: formElement.preventDefault ist keine Funktion – Andreas

+0

try this.preventDefault(); –

Antwort

0

ich es gelöst, indem die Daten-bind-Typ auf ein Ereignis zu ändern wie diese

<form method="POST" data-bind="event: { submit: submitComment }"> 
    <label for="comment"> 
     <textarea name="comment" data-bind="value: commentTextArea"></textarea> 
     <button type="submit">Submit</button> 
    </label> 
</form> 

auf ein Ereignis Durch Änderung ich die event -parameter bekommen, dass ich wie dieses

ausbreitende verwenden zu stoppen
this.commentTextArea = ko.observable(''); 
this.submitComment = function(formElement, event) { 
    event.stopPropagation(); 
}