/*
* @author ambar
* html5 placeholder pollfill
* - 使用绝对定位内嵌层
* - 也适用于密码域
* 目标浏览器: IE 6~9, FF 3.5 */
(function ($) {
var attr = 'nullText'; $.fn.placeholder = function (options) {
return this.each(function () {
var $input = $(this);
if (typeof options === 'string') {
options = { text: options };
} var opt = $.extend({
text: '',
style: {}, namespace: 'nullText',
hideOnFocus: false
}, options || {}); if (!opt.text) {
opt.text = $input.attr(attr);
} var width = $input.width(); var show = function () { $layer.show(); };
var hide = function () { $layer.hide(); };
var is_empty = function () { return !$input.val(); };
var check = function () { is_empty() ? show() : hide(); }; var position = function () {
var pos = $input.position();
if (!opt.hideOnFocus) {
// 按鍵隱藏的情况,需要移動光標两像素
pos.left += 2;
}
pos.top += 3;
$layer.css(pos);
}; var layer_style = {
color: 'gray',
cursor: 'text',
textAlign: 'left',
position: 'absolute',
textShadow: 'none',
fontSize: $input.css('fontSize'),
fontFamily: $input.css('fontFamily'),
display: is_empty() ? 'block' : 'none',
zIndex: '1000',
top: '3px'
}; var package_style = { position: 'relative' }; // create
var layer_props = {
text: opt.text,
width: width,
height: 'auto'
}; // 确保只绑定一次
var ns = '.' + opt.namespace, $layer = $input.data('layer' + ns);
if (!$layer) {
$layer = $('<label>', layer_props)
.attr('for', $input.attr('id'));
$input.data('layer' + ns, $layer);
} var $package = $("<div></div>").css(package_style);
$input.parent().append($package);
$package.append($layer).append($input); // activate
$layer
.css($.extend(layer_style, opt.style))
.unbind('click' + ns)
.bind('click' + ns, function () {
opt.hideOnFocus && hide();
$input.focus();
});
$input
.unbind(ns)
.bind('blur' + ns, check); if (opt.hideOnFocus) {
$input.bind('focus' + ns, hide);
} else {
$input.bind('keypress keydown' + ns, function (e) {
var key = e.keyCode;
if (e.charCode || (key >= 65 && key <= 90)) {
hide();
}
})
.bind('keyup' + ns, check);
} // 由于 ie 记住密码的特性,需要监听值改变
// ie9 不支持 jq bind 此事件
$input.get(0).onpropertychange = check; position();
check();
});
}; })(jQuery); //调用方法
$("[nullText]").placeholder();

jquery placeholder的更多相关文章

  1. JQuery Placeholder - Input提示信息

    JQuery Placeholder Placeholder属性是HTML5为Input添加的,在Input上提供一个占位符,文字形式展示输入文字预期值的提示信息. 如: 需要使用:placehold ...

  2. jquery.placeholder.js的使用

    最近做东西用到placeholder这个属性,可是这个属性在低版本的IE或者QQ浏览器等这些浏览器上这个属性不能生效,后来在网上查了下,发现了jquery的一个插件jquery.placeholder ...

  3. jquery.placeholder.min.js让吃屎的IE浏览器支持placeholder去吧

    描述:现在都是HTML5时代了,所有的浏览器都支持placeholder,唯独IE不支持.现在我们有了这款插件,IE下终于可以支持了!  图片展示:   兼容浏览器:IE6+/Firefox/Goog ...

  4. 【学习】jquery.placeholder.js让IE浏览器支持html5的placeholder

    type为text或password的input,其在实际应用时,往往有一个占位符,类似这样的: 在没有html5前,一般写成value,用js实现交互,文本框获得焦点时,提示文字消失,失去焦点时,文 ...

  5. jquery 小插件,完成“输入字段预期值的提示信息”,防html5 placeholder属性

    前言:在很多时候,我们需要文本框中显示默认值,获取焦点时,文字框中就会清空给的值,当失去焦点时,如果没有值,继续显示默认的文字,如果有输入值,就显示输入的值.现在项目中需要用到这个地方的功能比较多,于 ...

  6. Jquery插件placeholder的用法

    闲的蛋疼,演示一下Jquery插件placeholder的用法,借助该插件能够轻松实现HTML5中placeholder特效: 效果图: 实现代码: <%@ page language=&quo ...

  7. jQuery插件placeholder的使用方法

    借助该插件可以轻松实现HTML5中placeholder特效: 实例代码如下: <script type="text/javascript" src="<%= ...

  8. 实用的placeholder插件,兼容IE下的placeholder,jquery插件

    placeholder在IE下无法兼容 ,下面的插件很好的处理了这个问题,拿去不谢 /* * jQuery placeholder, fix for IE6,7,8,9 * @website itmy ...

  9. html5 placeholder ie 不兼容问题 解决方案

    解决HTML5 placeholder的方案 来源:   时间:2013-09-05 20:06:49   阅读数:11375 分享到: 0 [导读] 使低版本浏览器支持Placeholder有很多方 ...

随机推荐

  1. 让你Android开发更简单

    转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...

  2. 使用IntelliJ IDEA 配置Maven(入门)

    1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置本地仓库路径   3.配置maven环境变量      ...

  3. 什么是Javascript Hoisting?

    Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑.个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正 ...

  4. Alpha阶段项目Postmortem

    以下对成员名字的简称: 陈鸿超 = 陈1 陈彦吉 = 陈2 石浩然 = 石 韩青长 = 韩 1. 设想和目标 1.1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ...

  5. Google Maps API V3 之 路线服务

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  6. EF 增删改

    一.新增 UserInfo user = new UserInfo() { UserName = "jamsebing", UserPass = " }; db.User ...

  7. C语言基础(3)-二进制、八进制、十六进制

    1.二进制 一个位只能表示0或者1两种状态,简称bit(比特) 一个字节为8个二进制数,称为8位,简称BYTE(字节) 一个字为2个字节,简称WORD. 两个字为双字,简称DWORD,占32个bit ...

  8. windows环境下面安装Apache2.4+MySql5.7+PHP5.6

    之前学习PHP一致是只用phpStudy集成开发环境,这对于新手而言无疑是帮助极大的,因为傻瓜式安装与使用方法减少了我们很多不必要的麻烦.但是作为一名合格的PHP开发人员,掌握PHP+MySQL+Ap ...

  9. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.2.17

    所需源码包: /usr/local/src/PHP-5.2.17/libmcrypt-2.5.8.tar.gz /usr/local/src/PHP-5.2.17/mhash-0.9.9.9.tar. ...

  10. double 和 float

    对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位.但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言 ...