在IE8等不支持placeholder属性的浏览器中模拟placeholder效果

placeholder是一个很有用的属性,可以提示用户在input框中输入正确的内容,但是IE8以及IE8一下的浏览器不支持该属性,我们可以使用js来模拟相似的效果。下面直接上代码:

<!doctype html>
<html>
<header>
<meta charset="utf-8">
<title>placeholder</title>
<style type="text/css">
*{margin:0;padding:0;}
form {margin:50px;}
input {display:block;margin:0 0 6px 0;}
</style>
</header>
<body>
    <form>
        用户名:<input name="name" placeholder="请输入用户名"/>
        密码:<input name="password" placeholder="请输入登陆密码"/>
    </form>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function(){
    function placeholderSupport() {    // 判断浏览器是否支持 placeholder
        return ‘placeholder‘ in document.createElement(‘input‘);
    }

    if(!placeholderSupport()){
        $(document).on(‘focus‘, ‘[placeholder]‘,function() {
            var input = $(this);
            if (input.val() == input.attr(‘placeholder‘)) {
                input.val(‘‘);
                input.removeClass(‘placeholder‘);
            }
        });
        $(document).on(‘blur‘, ‘[placeholder]‘,function() {
            var input = $(this);
            if (input.val() == ‘‘ || input.val() == input.attr(‘placeholder‘)) {
                input.addClass(‘placeholder‘);
                input.val(input.attr(‘placeholder‘));
            }
        });
        $(‘[placeholder]‘).blur();
    };
});
</script>
</body>
</html>

‘placeholder‘ in document.createElement(‘input‘) ,该行代码利用 in 表达式来判断浏览器中的 input 元素中是否有 placeholder 属性存在。

$(‘[placeholder]‘) 是一个Jquery 的属性选择器,选择页面上所有的具有 placheholder 属性的元素。在页面加载完成时我们首先调用  blur() 方法,将所有 input 元素的值 设置 为 input 属性 placeholder 对应的值,从而模拟 placeholder 的效果。

效果如下图所示:

选中 input 时的效果:

时间: 2024-10-16 08:40:34

在IE8等不支持placeholder属性的浏览器中模拟placeholder效果的相关文章

html5的placeholder属性(IE如何兼容placeholder属性)

界面UI推荐 jquery html5 实现placeholder兼容password  IE6 html5的placeholder属性(IE如何兼容placeholder属性) 2013-01-05 10:26:06|  分类: web学习 |  标签:html  js  ie  placeholder  |举报 |字号大中小 订阅 placeholder属性,IE对其的支持表示无奈,firefox.google chrome表示毫无压力. HTML5对Web Form做了许多增强,比如inp

解决seajs ie8 对象不支持charAt 属性。

在使用 seajs做项目,今天偶然发现在ie9以下的ie版本会 报出 对象不支持charAt 属性.刚开始还以为是自己写的js部分出了问题,经过几个小时的奋战.最终找到了其根源.在sea-debug.js的源码中有个normalize(path)方法.源码如下: function normalize(path) { var last = path.length - 1 var lastC = path.charCodeAt(last) // If the uri ends with `#`, j

【工作笔记五】html5的placeholder属性(IE如何兼容placeholder属性)

placeholder属性,IE对其的支持表示无奈,firefox.google chrome表示毫无压力. HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等.Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失.以前要实现这效果都是用JavaScript来控制才能实现: <input id="t1" 

在IE8及以下的浏览器中,不支持placeholder属性的解决办法

以下代码解决了在IE8及以下浏览器中不支持placeholder属性. 原理:将placeholder的值作为内容写入控件,并添加控件事件来进行模拟. ;(function(){ if( !('placeholder' in document.createElement('input')) ){ // 匹配 除type=password以外所有input.textarea $('input[placeholder][type!=password],textarea[placeholder]').

HTML5的placeholder 属性的向下兼容

HTML5的placeholder 属性的向下兼容 更多 0 placeholder属性是HTML5新添加的属性,当input或者textarea设置了该属性后,该值的内容将作为灰色提示显示在文本框中,当文本框获得焦点时,提示文字消失,placeholder可作为输入框的提示文案,如图所示登录框: 系统登录 其实以前是通过给input|textarea设置value值来实现类似功能的,当input|textarea获得焦点时,将其value设置为空.但是有一个问题是对于密码输入框: <input

placeholder 属性的兼容性

placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或输入内容)时,提示文字消失. 但是在不支持html5的低版本的浏览器中,placeholder属性是无效的,例如ie9及以下的ie浏览器不兼容这个属性.下面介绍placeholder兼容性的处理 在页面添加如下脚本 $(function() {   // 如果不支持placeholder,用jQuery来完成   if(!isSupport

HTML5中的placeholder属性

placeholder属性是HTML5 中为input添加的.在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示. 如 <input type="text" name="loginName" placeholder="邮箱/手机号/QQ号"> 目前浏览器的支持情况 浏览器 IE6/7/8/9 IE10+ Firefox Chrome Safari  是否支持 NO YES YES

placeholder 属性

placeholder 属性提供可描述输入字段预期值的提示信息(hint). 该提示会在输入字段为空时显示,并会在字段获得焦点时消失. 1 <input placeholder="text"> placeholder 属性是 HTML5 中的新属性

解决html5新标签 placeholder 低版本浏览器下不兼容问题

placeholder属性是HTML5 中为input添加的.在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示. 实例:1 <input type="text" name="userName" placeholder="请输入用户名"> placeholder操作起来非常方便,提高了开发效率,同时在高版本浏览器中用户体验也很好,所以本人很喜欢用这个属性. 然而,在IE9以下版本浏