在input元素下面做一个弹出框,点击弹出框弹出框不消失,点击其他地方弹出框消失

在这里插入图片描述

需求

1.点击input弹出弹出框
2.点击弹出框的文字弹出框不消失
3.点击弹出框以外的地方弹出框消失

做法


<script setup lang="ts">
import { withDefaults, defineProps, ref, computed } from 'vue'

const wrapRef = ref<HTMLDivElement | null>(null)
const shouldPopShow = ref<boolean>(false)
const isSelect = ref<boolean>(false)

const onFocus = () => {
  wrapRef.value?.classList.add('wrap-focus')
  shouldPopShow.value = true
}
const onBlur = () => {
  //这里是关键,关闭弹窗应当是有条件的关闭,只有条件为false是才关闭
  if (!isSelect.value) {
    wrapRef.value?.classList.remove('wrap-focus')
    shouldPopShow.value = false
  }
}
const popBlur = () => {
  //弹窗在onblur后将条件变成false,并手动关闭弹窗
  isSelect.value = false
  wrapRef.value?.classList.remove('wrap-focus')
  shouldPopShow.value = false
}
const userSelect = (e: Event) => {
  //弹窗被点击时要把条件改成true
  isSelect.value = true
}
</script>

<template>
  <div>
    <label tabindex="-1" ref="wrapRef">
      <input type="text" :value="value" @focus="onFocus" @blur="onBlur" readonly />
    </label>
    <div
      tabindex="-1"
      :class="{ 'timePicker-pop-show': shouldPopShow }"
      @mousedown="userSelect"
      @blur="popBlur"
      ref="popRef"
    >
      <!--     弹出框内容-->
    </div>
  </div>
</template>
思路:

1.将弹出框定位到input元素下面
2.监听input元素的focus事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在 jQuery 框中想要添加一个 input 元素,可以使用以下步骤: 1. 创建一个 input 元素,可以使用 `createElement` 方法来创建: ```javascript var input = document.createElement("input"); ``` 2. 设置 input 元素的属性,例如设置类型和名称: ```javascript input.type = "text"; input.name = "myInput"; ``` 3. 将 input 元素添加到框中的适当位置。具体的添加方式取决于你使用的是哪种框插件或方法。 - 如果你是自定义框,可以使用 `appendChild` 方法将 input 元素添加到框的 DOM 节点中。 ```javascript var dialog = document.getElementById("myDialog"); dialog.appendChild(input); ``` - 如果你是使用 jQuery UI 的对话框,可以使用 `appendTo` 方法将 input 元素添加到对话框中。 ```javascript $("#myDialog").append(input); ``` - 如果你是使用其他框插件,可以参考相应插件的文档,查找相应的方法将 input 元素添加到框中。 4. 根据需要,你还可以设置 input 元素的其他属性,例如样式、事件监听器等。 ```javascript // 设置样式 input.style.width = "200px"; // 添加事件监听器 input.addEventListener("change", function() { console.log("输入框的值发生改变"); }); ``` 通过以上步骤,你可以在 jQuery 框中添加一个 input 元素,并根据需要进行进一步的设置和操作。请注意,具体的实现可能因你使用的框插件或方法而有所不同,以上仅提供了一种通用的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值