ユーザーが「タブ」ボタンを使用してフィールドから移動したかどうかを検出しようとしています。そうであれば、データを保存したいと思います。
この場合、タブを介して最後のフィールドを終了すると、2 つのフィールドが保存されます。「保存」を手動でクリックすると、両方のフィールドが正しく更新されます。TAB を使用すると、最初のフィールドのみが保存され、古いフィールドには新しいデータが保存されません。これは、どういうわけか「キーダウン」バインディングが新しいデータを認識していないことを示しています。
ローカルでデバッグして、tabOut メソッドの "data" にカーソルを合わせると、最初のフィールドには新しいデータが含まれていますが、2 番目のフィールドには古いデータが含まれていることがわかります。
フィドル: http://jsfiddle.net/PTSkR/18/
どんな助けでも大歓迎です!
見る:
<div class="span5 side-study-box">
<textarea data-bind="value: sides()[0].content"></textarea>
</div>
<div class="span5 side-study-box">
<textarea data-bind="value: sides()[1].content, event: { keydown: tabOut }"></textarea>
</div>
タブアウト関数:
self.tabOut = function (data, event) {
if (event.keyCode == 9) {
debugger;
self.save();
};
return true;
};