防止在没有指针事件的情况下单击:无
Preventing clicks without pointer-events:none
我想在文本输入(input type='text'
或textarea
)上方放置一个自定义占位符文本元素。然而,当占位符文本元素就在文本输入的正上方时,我不知道如何使文本输入可点击。设置pointer-events:none
使占位符不可点击效果很好,但在旧版本的IE中不支持。
到pointer-events:none
的解决方案通常包括手动触发子元素的onclick
。但是,对于文本输入,onclick
是由浏览器隐式完成的,因此不需要触发任何事件。
我考虑过的其他解决方案包括在占位符上设置onclick
来聚焦文本输入,但这意味着光标总是放在输入的末尾。我希望能够点击文本输入,并让光标出现在我点击的地方。
另一种选择是使用z-index
将占位符放置在输入下方,然后使输入透明。但是,这也会删除输入的默认边界,这是不可取的。
即使文本显示在上面,只使用HTML/CSS和纯Javascript(没有jquery),文本输入如何可以点击?
您可以在没有Javascript的情况下完成此操作。只需使用这样的<label>
标签:
<label class="placeholder" for="name">Name</label>
<input type="text" id="name">
通过在单击标签时使用for
和id
属性,浏览器将焦点切换到链接的表单字段。然后,例如,您可以通过在JavaScript中侦听focus
事件来隐藏占位符。您需要设置占位符标签的样式才能使用position: absolute
。请参阅实际示例(向下滚动查看某些表单)。
上面定义占位符文本的方法有一些优点:
- 实际上,您为字段定义了一个标签。这可能有助于访问
- 您可以将表单字段的值和占位符文本分开,这样您就可以支持部分填充的表单
- 您可以支持比使用
placeholder
属性更多的浏览器 - 您可以随心所欲地设置
label
标记的样式,这对于placeholder
属性来说并不容易。你甚至可以使用CSS或JS动画
相关文章:
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 如何在不需要单击按钮的情况下获取选项的值
- 在没有焦点的情况下捕获画布上的第一次单击事件
- 如何在不呈现页面的情况下点击链接
- 切换菜单仅在单击时打开,而不是默认情况下打开
- 如何在不刷新页面的情况下每次单击一组选项卡时刷新视图内容窗格
- 如何在没有Ajax的情况下将blob存储在表单中,并在单击提交时将其发送到服务器
- Ajax-函数在没有调用或单击的情况下启动
- 如何在只单击一个星形按钮的情况下启用禁用按钮
- 只有在未选中的情况下,才能单击带量角器的复选框
- 简单的淡入和淡出效果在没有框架的情况下点击
- 如何在不使用dijit的情况下在按钮单击时更改地图缩放级别
- 是否可以在不导致单击事件的情况下更改复选框状态
- 是否可以在不中断单击事件的情况下对子级鼠标按下重新排序
- 在没有任何单击按钮的情况下更改文本框值时调用 c# 方法
- Twitter 引导弹出窗口 :如何在不使用正文/文档事件处理程序的情况下在外面单击时隐藏它
- 检测浏览器滚动条上的鼠标按下/单击事件
- 如何限制用户在没有特定操作的情况下离开页面(例如,单击提交按钮)
- 如何在不悬停/单击的情况下设置放大图像的动画
- jQuery:如何在没有ajax的情况下点击链接后发布数据