javascript - 防止没有指针事件的点击 :none

标签 javascript html css pointer-events

我想在文本输入(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">

通过使用 forid单击标签时,浏览器会将焦点切换到链接的表单域。然后您可以通过监听 focus 来隐藏占位符。 JavaScript 中的事件。您需要设置占位符标签的样式才能使用 position: absolute .参见 live example (向下滚动查看某些表格)。

上述定义占位符文本的方法有一些优点:

  1. 您实际上为字段定义了标签。这可能有助于辅助功能。
  2. 您将表单字段的值和占位符文本分开,因此您可以支持部分填写的表单。
  3. 与使用 placeholder 相比,您可以支持更多的浏览器属性。
  4. 您可以设置 label 的样式标记但是你喜欢,这对于 placeholder 来说并不容易属性。您甚至可以使用 CSS 或 JS 动画!

关于javascript - 防止没有指针事件的点击 :none,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452597/

相关文章:

javascript - 路由未按预期工作

用于查找字符串的 jquery 选择器

html - 如何使用 html 和 css 创建网站模板?

javascript - localStorage setItem 不适用于 ipad

html - CSS 属性 min-height 导致边距问题?

javascript - 使用 CSS 或 Javascript,如何在响应式网页上修复汉字中的孤立文本?

html - 使用 CSS 左上对齐单个图像

javascript - 自定义 404 页面导致子文件无法加载 javascript

javascript - jQuery "bounce"对中心对齐 block 元素的影响使它们在 Firefox 和 IE8 中左对齐

javascript - 使用 Angular 2 RC6 向组件提供 DomSanitizer 的正确方法