首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在textarea的onFocusOut之前调用按钮的onclick?

如何在textarea的onFocusOut之前调用按钮的onclick?
EN

Stack Overflow用户
提问于 2017-08-10 22:41:12
回答 2查看 828关注 0票数 1

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

问题是当我按下按钮,它应该删除td-元素的父元素时,我失去了文本区域的焦点,该按钮在按钮按下扳机之前就被隐藏了。

以下是这些要素:

代码语言:javascript
复制
<td>
    <textarea oninput='textHeight(this)' onfocus='onFocus(this)' onfocusout='onFocusOut(this)'></textarea>
    <button onclick='deleteNote(this)'>X</button>
</td>

JavaScript:

代码语言: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();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 23:11:47

我想出了如何得到你想要的结果。通过使用focusout事件属性relatedTarget,我们可以有条件地允许在单击button时不隐藏它。

我稍微修改了你的代码:

  1. textarea内联onfocusout属性中,我们必须将window.event属性传递给您的函数,以便捕获focusout事件。
  2. 我们需要在您的函数中访问focusout事件,因此我们也包括它:

onFocusOut = (textarea, event) => {

代码语言:javascript
复制
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();
}
代码语言:javascript
复制
<td>
    <textarea oninput='textHeight(this)' onfocus='onFocus(this)' onfocusout='onFocusOut(this, window.event)'></textarea>
    <button onclick='deleteNote(this)'>X</button>
</td>

票数 2
EN

Stack Overflow用户

发布于 2017-08-10 22:46:51

如果在textarea不为空时不隐藏按钮,该怎么办?

代码语言:javascript
复制
onFocusOut = (textarea) => {
    if (textarea.value === "")
        textarea.parentElement.querySelector("button").style.display = "none";
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45624490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档