`
backspace
  • 浏览: 137126 次
文章分类
社区版块
存档分类
最新评论

js模仿html5 placeholder

 
阅读更多

html5原生支持placeholder,对于不支持的浏览器(ie),可用js模拟实现。
js代码

 1 (function(){
 2     //判断是否支持placeholder
 3     function isPlaceholer(){
 4         var input = document.createElement('input');
 5         return "placeholder" in input;
 6     }
 7     //不支持的代码
 8     if(!isPlaceholer()){
 9         //创建一个类
10         function Placeholder(obj){
11             this.input = obj;
12             this.label = document.createElement('label');
13             this.label.innerHTML = obj.getAttribute('placeholder');
14             this.label.style.cssText = 'position:absolute; text-indent:4px;color:#999999; font-size:12px;';
15             if(obj.value != ''){
16                 this.label.style.display = 'none';
17             }
18             this.init();
19         }
20         Placeholder.prototype = {
21             //取位置
22             getxy : function(obj){
23                 var left, top;
24                 if(document.documentElement.getBoundingClientRect){
25                     var html = document.documentElement,
26                         body = document.body,
27                         pos = obj.getBoundingClientRect(),
28                         st = html.scrollTop || body.scrollTop,
29                         sl = html.scrollLeft || body.scrollLeft,
30                         ct = html.clientTop || body.clientTop,
31                         cl = html.clientLeft || body.clientLeft;
32                     left = pos.left + sl - cl;
33                     top = pos.top + st - ct;
34                 }
35                 else{
36                     while(obj){
37                         left += obj.offsetLeft;
38                         top += obj.offsetTop;
39                         obj = obj.offsetParent;
40                     }
41                 }
42                 return{
43                     left: left,
44                     top : top
45                 }
46             },
47             //取宽高
48             getwh : function(obj){
49                 return {
50                     w : obj.offsetWidth,
51                     h : obj.offsetHeight
52                 }
53             },
54             //添加宽高值方法
55             setStyles : function(obj,styles){
56                 for(var p in styles){
57                     obj.style[p] = styles[p]+'px';
58                 }
59 },
60             init : function(){
61                 var label = this.label,
62                     input = this.input,
63                     xy = this.getxy(input),
64                     wh = this.getwh(input);
65                 this.setStyles(label, {'width':wh.w, 'height':wh.h, 'lineHeight':20, 'left':xy.left, 'top':xy.top});
66                 document.body.appendChild(label);
67                 label.onclick = function(){
68                     this.style.display = "none";
69                     input.focus();
70                 }
71                 input.onfocus = function(){
72                     label.style.display = "none";
73                 };
74                 input.onblur = function(){
75                     if(this.value == ""){
76                         label.style.display = "block";
77                     }
78                 };
79             }
80         }
81         var inpColl = document.getElementsByTagName('input'),
82             textColl = document.getElementsByTagName('textarea');
83         //html集合转化为数组
84         function toArray(coll){
85             for(var i = 0, a = [], len = coll.length; i < len; i++){
86                 a[i] = coll[i];
87             }
88             return a;
89         }
90         var inpArr = toArray(inpColl),
91             textArr = toArray(textColl),
92             placeholderArr = inpArr.concat(textArr);
93         for (var i = 0; i < placeholderArr.length; i++){
94             if (placeholderArr[i].getAttribute('placeholder')){
95                 new Placeholder(placeholderArr[i]);
96             }
97         }
98     }
99 })()

html代码:

1 <div>
2     <input type="text" placeholder="提示1" /><br>
3     <textarea placeholder="提示2" /></textarea><br>
4     <input type="text" placeholder="提示3" /><br>
5 </div>

css代码:

1 div,input,textarea{ margin:0; padding:0;}
2 div{width:400px; margin:100px auto 0;}
3 input,textarea{width:200px;height:20px; margin-top:5px;line-height:20px;border:1px #666666 solid; background-color:#fff; padding-left:2px;}
4 textarea{ height:60px; font-size:12px; resize:none;}

 

 

貌似上面的不支持IE,不知道什么原因,又找了个jquery的可以做。

如果使用

<input type="text" id="test" placeholder="可以提示使用者輸入些什麼">

你可能會發現在 firefox 、google chrome 都正常

http://3wa.tw/photo/small.php?w_size=450&compassion=80&file_name=users/shadow/20120831_091704_0.png&noshow=1

但在 ie 就沒有效果

還好這時候有這個~

有人整理的非常好了^_^

https://github.com/mathiasbynens/jquery-placeholder

連demo都很完整了

http://mathiasbynens.be/demo/placeholder

總之,把以下的code貼到 head 就能跑了

    <script src="http://3wa.tw/inc/javascript/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
    <!--fix placeholder  
       $('input, textarea').placeholder();
    -->
    <script src="http://3wa.tw/inc/javascript/jquery/jquery-placeholder/jquery.placeholder.min.js" type="text/javascript"></script>  
    // 修正 placeholder 
    $(document).ready(function() {
      $('input, textarea').placeholder();
    });
分享到:
评论

相关推荐

    js模仿html5 placeholder适应于不支持的浏览器

    下面我们将详细讲解如何通过JavaScript来模拟HTML5的`placeholder`效果。 首先,我们需要检测浏览器是否支持`placeholder`属性。这可以通过创建一个新的`input`元素并检查`placeholder`属性是否存在来实现: ```...

    手机模仿UC资讯_HTML手机电脑网站_网页源码移动端前端_H5模板_自适应响应式源码.zip

    该压缩包文件“手机模仿UC资讯_HTML手机电脑网站_网页源码移动端前端_H5模板_自适应响应式源码.zip”包含了一套用于创建类似UC资讯的手机和电脑网站的HTML源码,专为移动端前端设计,采用了H5(HTML5)技术和自适应...

    HTML5仿百度制作简单的登录界面.zip

    总的来说,这个项目涵盖了HTML5的表单元素、表单验证、本地存储以及可能的JavaScript交互。通过这个项目,学生不仅可以学习到HTML5的基础知识,还能了解网页开发中的用户体验设计和数据验证策略,这些都是现代Web...

    JavaScript模仿百度搜索框输入文字删除特效源码.zip

    这个压缩包"JavaScript模仿百度搜索框输入文字删除特效源码.zip"包含了实现这一功能的代码资源,主要涉及JavaScript、HTML和CSS等技术。以下是关于这一特效的详细知识点: 1. **HTML结构**: - 搜索框通常由`...

    HTML5简洁精美的前端网站

    3. **Canvas绘图**:HTML5的元素提供了一个画布,通过JavaScript可以进行动态图形绘制,用于创建游戏、图表、动画等复杂视觉效果。 4. **SVG矢量图**:SVG(Scalable Vector Graphics)是一种用于描绘图形的XML格式...

    html+css+javascript模拟QQ登陆窗口效果

    QQ作为中国最流行的即时通讯工具之一,其登录界面的设计简洁而直观,对于初学者来说,模仿这个设计可以很好地提升Web前端开发技能。 首先,我们从HTML结构开始。HTML是网页的基础,用于构建页面的骨架。一个简单的...

    placeholder-animated:具有动画占位符的输入,其操作类似于Google登录名

    在压缩包子文件的文件名称列表中,我们看到"placeholder-animated-master",这可能是一个Git仓库的主分支名称,通常表示这是一个开源项目,可能包含HTML、CSS和JavaScript文件,用于创建和控制输入占位符的动画效果...

    模仿百度搜索框

    【标题】:“模仿百度搜索框”这一项目旨在创建一个与百度搜索框类似的功能性搜索组件。这个组件将包括用户交互、样式设计以及功能实现等方面,旨在提供一个接近于百度搜索体验的网页元素。 【描述】:“内含js、...

    jQuery+H5结婚倒计时邀请函电子请帖模板.rar

    2. **HTML5的新特性**:掌握如何利用HTML5的新元素(如、等)和属性(如datetime、placeholder等)来优化页面结构和用户体验。 3. **CSS3的动画和过渡**:了解如何使用`transition`和`animation`属性创建过渡效果和...

    模仿google 的搜索条 PHP

    在构建一个类似Google的搜索条功能时,PHP作为服务器端脚本语言,通常与前端的HTML和JavaScript(AJAX)配合工作,以实现动态交互。在这个项目中,我们看到两个关键文件:`all.html`和`gl.php`。`all.html`可能是...

    JS实现页面查找Ctrl+F

    通过这些步骤,我们可以实现一个基本的JavaScript页面查找功能,模仿浏览器的Ctrl+F行为。在实际项目中,可能还需要考虑性能优化、错误处理、兼容性等问题。记得在`JS实现页面查找.htm`文件中查看具体实现细节,以...

    JS 仿支付宝input文本输入框放大组件

    在JavaScript(JS)开发中,有时我们需要实现一些高级交互效果,比如模仿知名应用的功能,例如支付宝的input文本输入框放大组件。这个组件在用户聚焦到输入框时,会将输入框放大,提供更好的用户体验,特别是在...

    仿163邮箱登录页面

    在这个项目中,我们将关注三个主要方面:HTML结构(div标签)、CSS样式(CSS)以及JavaScript交互(js)。 1. **HTML结构**: - `div`标签是HTML中的一个块级元素,常用于创建网页的布局结构。在仿163邮箱登录页面...

    微信小程序模仿微信聊天界面布局demo简单源码学习开发

    在本文中,我们将深入探讨如何使用CSS和div技术来创建一个微信小程序,模仿微信聊天界面的布局。这个项目是为初学者提供一个源码学习的机会,帮助他们掌握微信小程序的开发基础。 首先,我们需要理解微信小程序的...

    js仿百度弹出登录框支持鼠标拖拽效果

    本文将详细解析如何使用JavaScript来模仿百度的弹出登录框,并实现鼠标拖拽效果。 首先,创建弹出登录框的核心是利用HTML来构建登录表单结构,包括用户名输入框、密码输入框、登录按钮以及可能的记住密码和注册链接...

    纯css3实现iphone表单风格.zip

    同时,HTML5的placeholder属性允许我们在输入框内设置提示文本,增强用户体验。在iPhone风格的表单设计中,可能会用到这些新特性来模拟iOS设备上的输入体验。 jQuery是一个流行的JavaScript库,它简化了DOM操作、...

    超好用的jquery 搜索提示,模仿谷歌和百度的提示功能

    &lt;input type="text" id="searchInput" placeholder="请输入关键词"&gt; &lt;div id="searchSuggestions" class="hidden"&gt;&lt;/div&gt; &lt;script src="script.js"&gt; &lt;/html&gt; ``` 这里我们引入了jQuery库,并创建了一个输入框`#...

    HTML+CSS简单实现凡客商城静态网页

    HTML和CSS是构建网页的基本技术,本项目"HTML+CSS简单实现凡客商城静态网页"旨在通过这两门语言,模仿知名电商网站凡客诚品的界面设计,创建一系列静态页面,包括首页、商品列表页、商品详情页、用户登录与注册、...

    JS评论留言发布表单代码.zip

    "JS评论留言发布表单代码.zip"提供的资源包含了一个简单的实现,旨在模仿微博发布功能。在这个项目中,我们将关注两个核心部分:表单设计和JS交互。 首先,表单设计通常包括输入框(例如文本区域)让用户输入评论,...

Global site tag (gtag.js) - Google Analytics