同样是最近遇到的一个小问题。因为IE9以下input是不支持placeholder属性的。在网上找到了解决方案,果断带走。正如鲁迅先生所说的‘拿来主义’:运用脑髓,放出眼光,自己来拿!感谢。借花献佛在这里记录分享下。

  用法很简单,在代码中引入placeholder.js,并加入后面的一段代码就行了。

 <script src="jquery-1.11.3.js"></script>
<!--IE8-IE6支持html5 placeholder新属性 引入脚本及相应功能代码-->
<script src="placeholder.js"></script>
<script>
// 使IE8-IE6支持html5 placeholder新属性
$(function(){
var support = (function(input) {
return function(attr) { return attr in input }
})(document.createElement('input'))
if ( !(support('placeholder') && $.browser.webkit) ) {
$('input[placeholder],textarea[placeholder]').placeholder({
useNative: false,
hideOnFocus: false,
style: {
textShadow: 'none'
}
});
} if ( !support('autofocus') ) {
$('input[autofocus]').focus()
}
});

其中placeholder.js的源码如下:

 (function ($) {
var attr = 'placeholder', nativeSupported = attr in document.createElement('input') $.fn.placeholder = function (options) {
return this.each(function () {
var $input = $(this) if ( typeof options === 'string' ) {
options = { text: options }
} var opt = $.extend({
text : '',
style : {},
namespace: 'placeholder',
useNative: true,
hideOnFocus: true
}, options || {}) if ( !opt.text ) {
opt.text = $input.attr(attr)
} if (!opt.useNative) {
$input.removeAttr(attr)
}else if ( nativeSupported ) { $input.attr(attr, opt.text)
return
} var width = $input.width(), height = $input.height()
var box_style = ['marginTop', 'marginLeft', 'paddingTop', 'paddingLeft', 'paddingRight'] 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 +=
}
$layer.css(pos)
$.each(box_style, function (i, name) {
$layer.css(name, $input.css(name))
})
} var layer_style = {
color : 'gray',
cursor : 'text',
textAlign : 'left',
position : 'absolute',
fontSize : $input.css('fontSize'),
fontFamily: $input.css('fontFamily'),
display : is_empty() ? 'block' : 'none'
} var layer_props = {
text : opt.text,
width : width,
height: 'auto'
} var ns = '.' + opt.namespace, $layer = $input.data('layer' + ns)
if (!$layer) {
$input.data('layer' + ns, $layer = $('<div>', layer_props).appendTo($input.offsetParent()) )
} $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 >= && key <=)) {
hide()
}
})
.bind('keyup' + ns,check)
} $input.get().onpropertychange = check position()
check()
})
} })(jQuery)

  有时候,并不需要把所有的都弄的一清二楚,不可能也没必要。更应该把精力放在对自己来说更合适更有意义更有价值的地方

最新文章

  1. 在.htaccess文件中写RewriteRule无效的问题的解决
  2. Java多线程系列--“JUC原子类”04之 AtomicReference原子类
  3. ASP.NET MVC中解决日志并发处理log4net
  4. Bug测试报告--食物链教学工具--奋斗吧兄弟
  5. javascript中window.open()与window.location.href的区别
  6. WCF入门教程五[WCF的通信模式]
  7. github/hexo搭建个人博客几个问题总结
  8. 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
  9. css控制背景图片在浏览器中居中,下拉浏览器的时候背景图一直不变
  10. linux常用命令详解 (一) 安装和登录命令
  11. float的深入剖析
  12. Android必知必会-Handler可能引起的内存泄露
  13. ViewBag赋值Html格式值
  14. Prometheus 监控Haproxy
  15. 魔力Python——一些基本概念
  16. 翻译:赋值操作符(:=)(已提交到MariaDB官方手册)
  17. 【JS单元测试】Qunit 和 jsCoverage使用方法
  18. base标签浏览器兼容问题
  19. 修改 spawn node.exe&quot; ENOENT at notFoundError问题
  20. Jvm中时区设置方式

热门文章

  1. Intent有可能的使用(两)
  2. Java EE (6) -- Java EE 5 Enterprise Architect Certified Master
  3. android 如何分析java.lang.IllegalArgumentException: Cannot draw recycled bitmaps异常
  4. Maven和Gradle
  5. Android 高仿微信即时聊天 百度云为基础的推
  6. 【原创】leetCodeOj --- Excel Sheet Column Title 解题报告
  7. 用Jstack跟踪Cpu占用率的Java线程(转)
  8. CentOS 5 安装Oracle10g
  9. Java没有源代码的同步集合~
  10. DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像