javascript - 如何在textarea的onFocusOut之前调用button的onclick?

标签 javascript html events

所以我有这个包含文本区域和按钮的 td 元素。当文本区域聚焦时,按钮显示,否则保持隐藏。

问题是当我按下按钮时,该按钮应该删除 td 元素的父元素,我失去了 textarea 的焦点,并且在按钮的 onclick 事件处理程序触发之前按钮被隐藏。

以下是元素:

<td>
    <textarea oninput='textHeight(this)' onfocus='onFocus(this)' onfocusout='onFocusOut(this)'></textarea>
    <button onclick='deleteNote(this)'>X</button>
</td>

JavaScript:

onFocus = (textarea) => {
    textarea.parentElement.querySelector("button").style.display = "inline";
}
onFocusOut = (textarea) => {
    textarea.parentElement.querySelector("button").style.display = "none";
}
deleteNote = (btn) => {
    btn.parentElement.parentElement.remove();
}

最佳答案

我想出了如何获得您想要的结果。通过使用 focusout 事件属性 latedTarget,我们可以有条件地允许 button 在点击时不被隐藏。

我稍微改变了你的代码:

  1. 在您的 textarea 内联 onfocusout 属性中,我们必须将 window.event 属性传递给您的函数,以便我们可以捕获focusout 事件。

  2. 我们需要访问函数中的 focusout 事件,因此我们也将其包含在其中:

onFocusOut =(文本区域,事件)=> {

onFocus = (textarea) => {
    textarea.parentElement.querySelector("button").style.display = "inline";
}
onFocusOut = (textarea, event) => {
    /* this was added to show the button if it's being clicked on*/
	if(event.relatedTarget != null){
  	if(event.relatedTarget.tagName == 'BUTTON'){
  	return
  	}
  }
	textarea.parentElement.querySelector("button").style.display = "none";
}
deleteNote = (btn) => {
    btn.parentElement.parentElement.remove();
}
<td>
    <textarea oninput='textHeight(this)' onfocus='onFocus(this)' onfocusout='onFocusOut(this, window.event)'></textarea>
    <button onclick='deleteNote(this)'>X</button>
</td>

关于javascript - 如何在textarea的onFocusOut之前调用button的onclick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45624490/

相关文章:

IE 中的 JavaScript keydown 错误

javascript - 正则表达式 - 除 "e"之外的任何字母表

javascript - Angular2 在服务内应用过滤器

javascript - jQuery 触发器没有按预期工作

javascript - 如何使用按钮 onclick 隐藏一个 div 并显示另一个 div?

WinForms - 调整大小事件后的操作

c# 两种形式之间的事件处理

php - 禁用特定页面上的 Javascript 执行 (HTML/PHP)

javascript - 使用javascript防止safari进入休眠状态

html - <select> 中的 <option> "label"属性有什么意义?