Keyup で動作するカスタム バインディングがあり、ユーザーが手動でデータを入力すると、valueAccessor().call が正常に動作し、目的の次の関数に入ります。ただし、同じデータをバーコード化し、同じリターン キーを送信すると (送信される最後の keyCode が両方のメソッドで 13 であることを確認しました)、valueAccessor は次の関数に到達せず、脱落します。
これは、バーコード データがフィールドに入力される速度と、それに続く「Enter」キーに関係があると思われます。バーコード文字の入力速度を遅くすると効果がありますか? もしそうなら、どのような方法をお勧めしますか?
ko.bindingHandlers.enterKey = {
init: function (element, valueAccessor, allBindings, vm) {
ko.utils.registerEventHandler(element, "keyup", function (event)
{
if (event.keyCode === 13) {
ko.utils.triggerEvent(element, "change");
valueAccessor().call(vm, vm);
}
return true;
}
);
}