让 select 的 option 标签支持事件监听(如复制操作)

本文介绍如何让select的option支持事件监听,尤其是实现鼠标操作复制option值的功能。由于默认情况下浏览器不支持直接对option进行JS事件监听和CSS样式设置,通过设置select的size属性为大于1的值,可以实现监听。当size属性设置后,右侧会出现滚动条,可以通过overflow:hidden来处理。文中提供了一个右键复制option值的实现方案,涉及HTML和JS代码,但复制功能的兼容性和完善性仍有待加强。
摘要由CSDN通过智能技术生成

这标题,让option支持事件监听,应该不难的呀,有什么好讲的?

其实还是有的,默认在浏览器代码是无法直接对option标签进行操作的,不仅包括JS事件监听,还是CSS样式设置

查了一些资料,姑且认为它是系统OS级别处理的

 

想自定义option的样式,很多人会建议用 <ul> <li> 标签来辅助同步操作与值

想对option进行事件监听,有一个tip:当给select显示设置了size 属性且值 大于1 时,才能监听

 

近来产品也提了个鼠标操作复制option值的需求,就利用这个size属性实现一番吧

先看图

实现小析

因为select的size属性表示默认展示多少个option,并设置这个高度

不过有了size之后,默认select右侧就会出现滚动条式样,加个 overflow:hidden 处理就行了

此外,功能操作与原select也有一些些不同,也要模拟处理

右键后生成一个复制按钮,点击复制则调用浏览器自身的复制命令

 

HTML

    <p>
        <input type="text" id="select-val" placeholder="值" size="1">
        <input type="text" id="copy-test" placeholder="测试复制">
    </p>

    <select style="overflow:hidden;">
        <option value="1">one</option>
        <option value="2">two</option>
        <option value="3">three</option>
        <option value="4">four</option>
        <option value="5">five</option>
    </select>

复制按钮的模板

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值