Javascript 使用jQuery实时更新内部文本

Javascript 使用jQuery实时更新内部文本,javascript,jquery,live-update,Javascript,Jquery,Live Update,我现在正在做一个项目。在这个项目中,我想实时更新一些按钮文本。我在项目中使用了contenteditable=“true”。我有两个解决方案。第一个工作正常,但我没有得到我想要的第二个有问题。在第二种情况下,当用户长时间按键时,文本将显示,而不释放按键。 在第一个事件中,我使用了keyup事件,在第二个事件中,我使用了keydown事件。我希望当keyup事件发生时,按钮的内部文本将更改为新文本 这是我的第一个密码(keyup): 这是我的第二个密码(按键): 用户正在键入的元素的内容不一定在

我现在正在做一个项目。在这个项目中,我想实时更新一些按钮文本。我在项目中使用了
contenteditable=“true”
。我有两个解决方案。第一个工作正常,但我没有得到我想要的第二个有问题。在第二种情况下,当用户长时间按键时,文本将显示,而不释放按键。
在第一个事件中,我使用了
keyup
事件,在第二个事件中,我使用了
keydown
事件。我希望当
keyup
事件发生时,按钮的内部文本将更改为新文本

这是我的第一个密码(keyup):

这是我的第二个密码(按键):


用户正在键入的元素的内容不一定在
按键事件发生时更新。这就是为什么它不会更新


如果使用
键控
,则不会出现此问题。

尝试
输入
事件

$('[contenteditable]').on('input', function() {
  $(this).closest('.code').prev().find('a').html($(this).html());
})

这是由于每次按键事件的触发点。你不能改变它。但是,如果
keyup
按您的要求工作,有什么问题?我不确定您真正想要的是什么。但您也可以尝试输入事件。两个小提琴在Chrome中都工作正常。但同意Rory的观点,这是因为关键事件。为什么不用up或keychange,而不用down?
$('[contenteditable]').on('keydown', function() {
    $(this).closest('.code').prev().find('a').html($(this).html());
})
$('[contenteditable]').on('input', function() {
  $(this).closest('.code').prev().find('a').html($(this).html());
})