IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Inline Form Labels(2)

记事本 2010-09-11 09:55:12 累计浏览 3,050 次
本机暂存

很多网站在填写表单的时候,都可以看到这样一种UI,input[type=text]里面有提示的文字,当鼠标点进去之后提示文字就消失了。关于这种UI,之前有写过文章介绍过http://www.zhoumingzhi.com/?p=182。在本文中主要是介绍以HTML 5的实现方式以及兼容方案。

一,HTML 5的实现方式

HTML 5的input元素引入了placeholder的属性,就是为了实现本文开头所说的效果,代码也很简单。

以下是代码片段:

<input type="text" placeholder="请输入一些文字" />

二,对不支持HTML 5浏览器的兼容方案

对于不支持HTML 5的浏览器,上面的方法就不可行了。但是placeholder这个属性可以利用起来,结合JS实现想达到的效果。下面结合代码说明实现方法:

首先要用JS检测一下浏览器支不支持placeholder这个属性。

以下是代码片段:
(function() {
 var tmp = document.createElement("input");
 window.supports = {
  // 检测input是否支持placeholder特性
  placeholder: "placeholder" in tmp
 }
})();

如果支持的话就什么也不做,浏览器会帮你实现这个效果。

如果不支持则要写段JS。为了方便说明用到了jQuery,代码如下:

以下是代码片段:
// 绑定input的placeholder
function bindPlaceholder(input) {
 if(!window.supports.placeholder) {
  var jqInput = $(input),
   placeholder = jqInput.attr("placeholder");
  if(placeholder) {
   if(input.value == "") {
    input.value = placeholder;
    $(input).addClass("placeholder");
   }
   jqInput.focus(function() {
    if(this.value == placeholder) {
     $(this).removeClass("placeholder");
     this.value = "";
    }
   }).blur(function() {
    if(this.value == "") {
     $(this).addClass("placeholder");
     this.value = placeholder;
    }
   });
  }
 }
}

上述代码中有个叫placeholder的CSS类,这个主要是让占位符的字体颜色变灰。CSS如下:

以下是代码片段:
.placeholder {
 color: #a9a9a9;
}

实现上面的函数之后,就可以在页面初始化的时候调用了。

以下是代码片段:
$("input[placeholder]").each(function() {
 bindPlaceholder(this);
});

三,结论

HTML 5中有很多很方便的特性,但是目前不是所有浏览器都支持,所以在用HTML 5的时候要考虑到兼容方案。

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,350)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. HTML5 离线缓存-manifest简介 (累计阅读 17,102)
  4. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  5. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  6. 天朝第二代身份证号码的验证机制 (累计阅读 14,762)
  7. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  8. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  9. 什么是全栈工程师? (累计阅读 14,038)
  10. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)