[解決済み] Knockout JSのデータバインドをロストフォーカスの代わりにキープレスで行うにはどうしたらいいですか?
2022-04-19 05:38:05
質問
この例では ノックアウトjs は、フィールドを編集して TAB キーを押したときに、ビューモデルのデータ、つまりフィールドの下のテキストが更新されるように動作します。
キーを押すたびにビューモデルのデータが更新されるように、このコードを変更するにはどうしたらよいでしょうか。
<!doctype html>
<html>
<title>knockout js</title>
<head>
<script type="text/javascript" src="js/knockout-1.1.1.debug.js"></script>
<script type="text/javascript">
window.onload= function() {
var viewModel = {
firstName : ko.observable("Jim"),
lastName : ko.observable("Smith")
};
viewModel.fullName = ko.dependentObservable(function () {
return viewModel.firstName() + " " + viewModel.lastName();
});
ko.applyBindings(viewModel);
}
</script>
</head>
<body>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
</body>
</html>
解決方法は?
<body>
<p>First name: <input data-bind="value: firstName, valueUpdate: 'afterkeydown'" /></p>
<p>Last name: <input data-bind="value: lastName, valueUpdate: 'afterkeydown'" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
</body>
から ドキュメント
追加パラメータ
値更新
バインディングにvalueUpdateというパラメータも含まれている場合、これは は、KO が変更を検出するためにどのブラウザイベントを使用すべきかを定義します。どの 以下の文字列値は、最も一般的に有用な選択肢です。
change"(デフォルト) - ユーザーが の場合は、フォーカスを別のコントロールに移動します。 要素に変更があった場合、その直後
keyup" - ユーザーがキーを離したときにビューモデルを更新します。
"keypress" - ユーザーが入力したときに、ビューモデルを更新します。 キーです。keyupとは異なり、ユーザがキーを押している間、繰り返し更新されます。 ダウン
- afterkeydown" - ユーザーの操作と同時にビューモデルを更新します。 文字を入力し始める。この機能は、ブラウザの キーダウンイベントを非同期で処理します。
これらのオプションのうち、"afterkeydown" は、次のような場合に最適な選択肢です。 は、ビューモデルをリアルタイムで更新し続けます。
関連
-
Vueにシンプルなメモ帳機能を実装
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] Node.js の console.log() で '[Object]' ではなく、完全なオブジェクトを取得するにはどうすればよいですか?
-
[解決済み] data-id属性を取得するにはどうすればよいですか?
-
[解決済み] 文字列の最後の文字を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
Vueにシンプルなメモ帳機能を実装
-
vueディレクティブv-bindの使用と注意点
-
Vueでルートネスティングを実装する例
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。