Gemäß der Dokumentation (knockoutjs.com/documentation/submit-binding.html) hat die Übergabe von knockoutjs den Vorteil, dass sie alternative Möglichkeiten zum Übermitteln des Formulars erfasst, wie zum Beispiel das Drücken der Eingabetaste während der Eingabe in ein Textfeld. Ich habe ein Raster auf meinem Formular und einige Benutzer versuchen, die Eingabetaste zu verwenden, um von einem Feld zum nächsten zu wechseln. Gibt es eine Möglichkeit, das Senden des Formulars zu vermeiden, wenn dies geschieht?Gibt es eine Möglichkeit, zu vermeiden, dass die Übergabebindung von knockoutjs das Formular sendet, wenn Sie die Eingabetaste drücken?
5
A
Antwort
8
Eine Möglichkeit besteht darin, einen Handler keypress
in das Formular einzufügen, der die Eingabetaste absorbiert. Es würde wie folgt aussehen:
<form data-bind="event: { keypress: absorbEnter }, submit: test">
<div data-bind="absorbEnter: true">
<input data-bind="value: name">
<input type="submit" value="Go" />
</div>
</form>
js:
var viewModel = {
name: ko.observable("test"),
absorbEnter: function(data, event) {
return event.keyCode !== 13;
},
test: function() {
console.log("submitting", arguments);
}
};
ko.applyBindings(viewModel);
Beispiel hier: http://jsfiddle.net/rniemeyer/FvZXj/2/
Ja Ryan, die absolut gearbeitet !! Vielen Dank. – jgarza
Konnte es sogar zu einem bindingHandler hinzufügen, um es aus Ihrem Ansichtsmodell herauszunehmen, wie zum Beispiel: http://jsfiddle.net/rniemeyer/FvZXj/3/ –
kann KO zwischen Schlüssel oben und Schlüssel unten unterscheiden? – FutuToad