この関数でライブタイピングをシミュレートしようとしています:
$('#expenseAccordion').on('keypress', '.netAmount input', function() {
setTimeout(function() {
$(this).closest('.accordion-group').find('.amount input').val($(this).val());
}, 0);
});
これは機能せず、次の奇妙なバグが発生します。
Uncaught TypeError: 未定義のメソッド 'toLowerCase' を呼び出せません
問題がある jQuery 行 (l 4245):
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
関数からすべての $(this) を削除して、そのようなことを試してみると:
$('#expenseAccordion').on('keypress', '.netAmount input', function() {
setTimeout(function() {
$('.amount input').val(4);
}, 0);
});
動作しますが、複数の入力があるため、イベントが発生する現在の要素を取得する必要があります。