jquery水印插件:placeholder
有的浏览器支持html5的水印placeholder(如Crome,firefox,ie10+),有的不支持html5的placeholder(ie9,ie8,ie7....),对于不支持placeholder的属性也能使用placeholderAttr,于是写了这个简单的jquery插件,发出来与大家分享,实现代码逻辑在代码中都有注释,实现细节请直接参看代码。

/**
* jqueryPlug : 给不支持html5 placeholder水印功能的浏览器打补丁
*/ ;(function($){
'use strict';
///////////////////////////////////////////////////////// /*
* 扩展jquery实例方法
*/
$.fn.powerplaceholder = function(){ /*
* PlaceHolder 实例构造函数
* @param [DOM Instance] elm
*/
var PlaceHolder = function(elm){
this.$elm = $(elm);
this.$span = $("<span></span>").text(this.$elm.attr("placeholder")).css({
"position":"absolute",
"display":"inline-block",
"color":"#ccc",
"overflow":"hidden",
"padding-left":"2px",
"padding-top":"2px",
"left":this.$elm.offset().left,
"top":this.$elm.offset().top,
"font-size":this.$elm.css("font-size"),
"width":this.$elm.width()+2,
"height":this.$elm.height()+2
}).appendTo("body");
this.init();
} /**
* 静态方法:是否支持html5的placeholder
*/
PlaceHolder.isSupportHtml5 = function(){
var i = document.createElement('input');
return 'placeholder' in i;
} /**
* 实例方法:
*/
PlaceHolder.prototype = { /*
* 控制setInterval方法的实例,释放setInterval
*/
intervalInstance:null, /*
* @function 初始化
*/
init:function(){
this.showOrHide(); this.$elm.on("focus.PlaceHolder",$.proxy(this.focus,this))
.on("blur.PlaceHolder",$.proxy(this.blur,this)); this.$span.on("click.PlaceHolder",$.proxy(this.clickSpan,this));
}, /*
* 聚焦
*/
focus:function(){
var self = this; // 不要重复调用setInterval
if (self.intervalInstance) {
return;
} /*
* 应该所示插件的核心:每隔50s判断一下输入框是否有值,有值显示,无值隐藏;
* 权衡是否这里应该使用keydown来做这个事情,使用setInverval是不是太耗费资源了??
*/
self.intervalInstance = setInterval(function(){
self.showOrHide();
},50);
}, /*
* 失焦
*/
blur:function(){ // clearInterval
clearInterval(this.intervalInstance);
this.intervalInstance = null; this.showOrHide();
}, /*
* 点击span时要触发输入框的focus事件
*/
clickSpan:function(){
this.$elm.trigger("focus.PlaceHolder");
}, /*
* 输入框有值显示placeholder,没有值隐藏placeholder
*/
showOrHide:function(){
if (this.$elm.val()) {
this.$span.hide();
}else{
this.$span.show();
}
}
}; /**
* 插件入口
* 支持html5的,采用原生态支持,不做任何处理;不支持html5 placeholder的采用插件实现模式支持
*/
if (!PlaceHolder.isSupportHtml5()) {
return this.each(function(){
new PlaceHolder(this);
});
}else{
return this;
};
}
})(jQuery);

jquery水印插件:placeholder的更多相关文章
- JQuery文本框水印插件的简单实现
采用JQuery实现文本框的水印效果非常容易,效果如下: 代码片段,定义要应用水印效果的文本框的样式: .watermark { color: #cccccc; } 将JavaScript代码封装成J ...
- Jquery插件placeholder的用法
闲的蛋疼,演示一下Jquery插件placeholder的用法,借助该插件能够轻松实现HTML5中placeholder特效: 效果图: 实现代码: <%@ page language=&quo ...
- 基于jquery 的插件,让IE支持placeholder属性
开发一个项目的时候为了美观和用户体验用到了input标签的placeholder属性,但是这个属性是html5中的,所以低版本的IE浏览器不支持.于是在百度找了一些解决方法,找了好几个都不是那么完美, ...
- jquery.validate插件在booststarp中的运用
现在在网络上已经可以找到很多基于bootstarp的表单认证,但是验证的都不全面的,下载后,我们还要理解作者的思路然后进行修改添加,这种修改方式往往适合学习,时间很多的时候.但是我们很多时候是没有时间 ...
- jquery.dataTables插件使用例子详解
DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格 效果图 代码 <!doctype html> & ...
- 【jQuery】(6)---jQuery validate插件
jQuery validate插件 一.导入js库 先导入jQuery库,然后导入Validate插件,如果是中文提示还需要 ...
- jquery表格插件Datatables使用、快速上手
Datatables使用 一.简介 官网:https://datatables.net/ 中文官网:http://datatables.club/ Datatables是一款jquery表格插件.它是 ...
- 深入学习jQuery自定义插件
原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数); $(‘#id’).myPlugin(o ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
随机推荐
- 网络资源(7) - JAX-WS视频
2014_08_25 http://v.youku.com/v_show/id_XNjMzNDcyMTk2.html 基于JAX-WS编程模型的WebService 1. @WebService注释类 ...
- 管道通信(使用popen和pclose功能简单的控制管道)
函数原型: FILE *popen(const char * command ,const char *mode) int pclose(FILE * stream) 当心: 采用popen和pclo ...
- hdu 1251(字典树)
题目链接:http://acm.hdu.edu.cn/status.php?user=NYNU_WMH&pid=1251&status=5 Trie树的基本实现 字母树的插入(Inse ...
- UVa 10223 - How many nodes ?
称号:气你一个整数n,问:多少节点可以产生n不同的二叉树. 分析:数论,卡特兰数.根据定义,你可以. 说明:请参阅http://blog.csdn.net/mobius_strip/article/d ...
- 【淡墨Unity3D Shader计划】四 热带雨林的文章: 排除、深度测试、Alpha测试和基本雾编译
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云 ...
- C#关于HttpClient的应用(二):极光推送IM集成
public class JPushClient:BaseHttpClient { private String appKey; private String masterSecret; public ...
- linux_常用命令_(ls, lsof,nslookup)_查看文件按照时间排序
平时收集些用到的命令 方便使用 1: ls -lrt 按时间排序 展示 2:nslookup 查看dns解析 3:lsof -p 进程号 lsof `which httpd` //那个进程在使用 ...
- 【百度地图API】百度API卫星图使用方法和卫星图对比工具
原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...
- NPOI mvc easyui 根据Excel模板 生成Excel
1.首先下载 NPOI https://npoi.codeplex.com/releases 只要dll 就好 示例代码库太难懂了. NPOI 是一个开源 免费的 东西.而且不依赖 office ...
- Self referencing loop detected with type
json.net namespace EFDAL{ using System; using System.Collections.Generic; using Newtonsoft. ...