blur()和keypress()无法使用replacewith()处理JQuery

时间:2017-06-18 10:04:36

标签: javascript jquery

如何在JQuery中使用replaceWith()的blur()和keypress()事件。 我在下面尝试了这个代码,它适用于blur(),没有任何错误,只是触发了一个单词' undefined'但当我按下回车键时,我收到了这个错误:

"未捕获的DOMException:无法执行' replaceChild' on'节点':要删除的节点不再是此节点的子节点。也许它被移动了一个模糊的'事件处理程序?"

这是我的代码:

$('body').on('blur keypress', 'input', function (e) {
  if (e.type === 'focusout' || e.keyCode === 13) {
    $(this).replaceWith('<strong>' + $(this).val() + '</strong>');
  }
});

1 个答案:

答案 0 :(得分:1)

按下回车键后,元素失去焦点,即当它被移除时会模糊,并触发一个新事件,但是当它触发时,该元素不再存在,因此出现错误。

您可以通过拆分条件来修复它,只需在按下回车键时触发blur事件

$('body').on('blur keypress', 'input', function (e) {
  if ( e.type === 'focusout' ) {
    $(this).replaceWith('<strong>' + $(this).val() + '</strong>');
  }
  if ( e.keyCode === 13 ) {
    $(this).trigger('blur')
  }
});