【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果

placeholder 是 html5 新增加的属性,主要提供一种提示(hint),用于描述输入域所期待的值。该提示会在输入字段为空时显示,并会在字段获得焦点时消失。placeholder 属性适用于以下类型的 input 标签:text, search, url, telephone, email 以及 password。

我们先看下在谷歌浏览器中的效果,如图所示:

获得焦点时:

输入字段:

因为是 html5 属性,自然低版本的浏览器比如 ie6-8 不兼容。下面就介绍下如何在低版本浏览器中显示以上效果,话不多说直接上代码。

html:

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="renderer" content="webkit"/><meta name="keywords" content=""/><meta name="description" content=""/><title>基于 jquery 实现 ie 浏览器兼容 placeholder 效果</title><style>*{margin:0;padding:0;}.txt{position:relative;font-size:12px;margin:10px;}.txt input{border:1px solid #ccc;height:30px;line-height:30px;padding:0 10px;width:200px;}.txt .txt-tip{color:#999;position:absolute;left:10px;top:0;height:32px;line-height:34px;}</style>
</head>
<body><div class="txt"><input type="text" value=""/></div>
</body>
</html>
<script src="js/jquery.min.js"></script>
<script src="js/placeholder.js"></script>
<script>
$(function(){var $input = $('.txt input');initPlaceholder($input, '请输入内容', 'txt-tip');
});
</script>

placeholder.js:

function initPlaceholder($input, msg, classname){var isIE = !!window.ActiveXObject || 'ActiveXObject' in window;var isPlaceholder = 'placeholder' in document.createElement('input');if(isPlaceholder && !isIE){$input.attr('placeholder', msg);}else{var $tip = $('<span class="' + classname + '">' + msg + '</span>');$input.after($tip);$.data($input[0], 'tip', $tip);if($input.val() != ''){hidePHTip($input);}dealPHTip($input, $tip);}
}
function hidePHTip($input){var $tip = $.data($input[0], 'tip');if($tip){$tip.hide();}
}
function dealPHTip($input, $tip){var _deal = function(){var val = $input.val();if(val == ''){$tip.show();}else{$tip.hide();}};$tip.click(function(){$input.focus();});$input.on('input propertychange', function(){clearTimeout(timeout);var timeout = setTimeout(_deal, 0);});
}

实现原理:首先过滤下浏览器,非 ie 浏览器并且支持 placeholder 属性就用 placeholder,ie 浏览器则用 span 代替 placeholder 文本内容,通过样式定位在 input 上方,同时监听 input 输入框值的变化来判断显示或隐藏 span。

我们来看下 ie6 浏览器中的效果:

获得焦点时:

输入字段:

可以看到和谷歌浏览器的效果是一致的,唯一不足的就是文字没有居中,可以通过 css 进行修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接远程电脑中的虚拟机---端口映射

连接远程电脑中的虚拟机---端口映射问题:A主机中运行有2台虚拟机&#xff0c;现在我们希望在B主机中通过ssh&#xff08;或其他方式&#xff09;访问A主机中的2台虚拟机。(前提&#xff1a;B主机可以ping通A主机&#xff0c;即A有公网IP或A、B在同一子网下) 解决方法 设置虚拟…

Unity 动画属性

在动画的使用上使用不当的设置往往会造成不可预料的结果。 首先&#xff0c;如果动画自身可以驱动物体移动&#xff0c;那么在Animator组件上必须选择apply root motion&#xff0c;物体的动画位移才能生效&#xff0c;否则动画只能在原地播放。 第二&#xff0c;Bake Into Pos…

获取Dataset前几条数据的两种方法

第一种 public static DataView GetLatestComments(int numComments) { DataView Comments new DataView(GetComments()); Comments.Sort “DateCreated Desc“; string filter string.Empty; string delimiter string.Empty; numComments Math.Min(numComments, Comm…

Javascript正则匹配数字,中英文,中横线,下划线,utf-8中文

为什么80%的码农都做不了架构师&#xff1f;>>> function check_string(nickname) {var reg /^[A-Za-z0-9-_\u4e00-\u9fa5]{4,30}$/;if (!reg.test(nickname)) {return false;}return true; } 转载于:https://my.oschina.net/biezhi/blog/396989

解决<style>无法重写.css文件的问题

解决style无法重写.css文件的问题问题&#xff1a;在main.css已经定义了.main_content {width: 10px;}。然而现在在index.html中&#xff0c;我们希望main_content的宽度设置为20px。 解决思路&#xff1a;在index.html中加入如下定义后&#xff0c;我们会发现格式依旧为10px&…

Unity3D 旋转

Unity有两种设置物体旋转的方式&#xff0c;一种时用Rotate&#xff08;&#xff09;函数来旋转&#xff0c;另一种时直接构造目标Quaternion来直接赋予rotation。 好吧&#xff0c;不知到写什么&#xff0c;各种旋转和unity2D差不多。在国内网站基本都是写入门的结果&#xff…

基于linux的集群系统LVS

一 LVS &#xff08;Linux Virtual Server&#xff09;针对高可伸缩、高可用网络服务的需求&#xff0c;我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法&#xff0c;并在Linux内核中实现了这些方法&#xff0c;将一组服务器构成一个实现可伸缩的、高可用网络服务…

java下包内继承时编译不过解决方案

代码源自《java核心技术一卷》抽象表示如下&#xff1a;ManagerTest.javapackage inheritance;...public class ManagerTest{}存放于&#xff1a;inheritance/ManagerTest.javaManager.javapackage inheritance;...public class Manager{}存放于&#xff1a;inheritance/Manage…

jps: command not found

CentOs7出现bash: jps: command not found的问题Centos7 默认安装了openJDK&#xff0c;jps命令不能使用 [rootmaven-test ~]# jps bash: jps: command not found...解决办法 [rootmaven-test ~]# yum install -y java-1.8.0-openjdk-devel再次执行 [rootmaven-test ~]# jp…

jQuery 开发环境搭配(转)

jQuery 作为一个轻量级的 JavaScript 库&#xff0c;至 06 年出来到现在&#xff0c; 也算是用得最火的 JavaScript 库了吧&#xff0c; 要开始学习 jQuery &#xff0c;首先还是必须得把环境搭配好吧&#xff0c; 这一篇博文呢&#xff0c;主要是想介绍一下在 Dreamweaver 上和…

WPF在预览视图下可以看到图片,运行时却报错提示找不到资源

原因&#xff1a;没有将图片资源添加到项目中&#xff1b; 转载于:https://www.cnblogs.com/canyeweiwei/p/11151408.html

Connection to node 0 (/192.168.204.131:9092) could not be established

解决连接虚拟机内kafka出现Connection to node 0 /192.168.204.131:9092 could not be established.Broker may not be available.问题&#xff1a; 在我尝试使用Springboot集成虚拟机内运行的kafka服务器时&#xff0c;出现了以下问题。 原因&#xff1a;可能出现的原因主要有…

《Android开发从零开始》——10. LinearLayout学习

1.介绍LinearLayout布局 2.通过实例讲解android:gravity属性 3.通过实例讲解android: layout_weight属性 课程下载地址&#xff1a;http://u.115.com/file/f14c3c7a37转载于:https://www.cnblogs.com/coolszy/archive/2011/04/02/2003190.html

获取本机MSSQL保存凭证

本文转自王子博客&#xff1a;http://www.cnblogs.com/killbit/p/4355950.html 首先要感谢哥们对我的指点&#xff0c;多谢。 当我们遇到类似情况下&#xff0c;如何获取保存在MSSQL工具里的凭证呢&#xff1f; //如果对方连接地址后面加了IP\sqlexpress 连接的时候你也记得加上…

【读书笔记-数据挖掘概念与技术】数据挖掘的发展趋势和研究前沿

复杂的数据类型 数据挖掘的其他方法 关于数据挖掘基础的观点&#xff1a; 可视和听觉数据挖掘 数据可视化数据挖掘结构可视化数据挖掘过程可视化交互式可视数据挖掘数据挖掘的应用

解决torch.cuda.is_available()为False的问题

解决torch.cuda.is_available为False问题&#xff1a;在Anaconda环境下&#xff0c;电脑拥有GPU并且已经通过conda install安装了Pytorch、cudatoolkit&#xff0c;但是torch.cuda.is_available()始终返回False&#xff08;找不到显卡&#xff09; 原因&#xff1a;使用conda …

如何解决ORA-04031错误

诊断并解决ORA-04031错误 当我们在共享池中试图分配大片的连续内存失败的时候&#xff0c;Oracle首先清除池中当前没使用的所有对象&#xff0c;使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求&#xff0c;就会产生ORA-04031错误。 当这个错误出现的时候你得到的…

SPOJ简介

SPOJ是波兰最为出色的Online Judge之一&#xff0c;界面和谐&#xff0c;题目类型也非常丰富&#xff0c;适合有一定基础的选手练习&#xff0c;对高手而言也是个提高能力的良好平台。SPOJ题目分类&#xff1a;classical&#xff0c;challenge&#xff0c;partial&#xff0c;t…

关于在Flask中使用Restful

学习例子 #!flask/bin/python from flask import Flask, jsonify from flask import abort from flask import make_response from flask import request from flask import url_for from flask.ext.httpauth import HTTPBasicAuth app Flask(__name__)tasks [{id: 1,title:…

Idea新建modules后无法自动导入pom.xml

Idea新建modules后无法自动导入pom.xml打开设置&#xff0c;搜索Maven&#xff0c;打开Importing&#xff0c;将红色箭头部分勾选 打开Ignored Files&#xff0c;将红色箭头部分都取消勾选 点击右侧工具栏的maven选项&#xff0c;点击红色箭头部分的Reimport All Maven Proje…