1:
<style>
.grey {
color: #999;
}
.blue {
color: blue;
}
</style>
<input id="t1" type="text" placeholder="请输入文字1" value="内容"/>
<input id="t2" type="text" placeholder="请输入文字2"/>
<input class="t2" type="text" placeholder="请输入文字3"/>
<input class="t2" type="text" placeholder="请输入文字4"/>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script>
//目前支持该属性的浏览器:Firefox4.0+、Chrome4.0+、Safari4.0+,Opera 11
/**
*
* @type {{_support: null, className: string, init: Function, create: Function, _setValue: Function, _moveCursor: Function}}
* 有两种调用方式
// 1)页面初始化时对所有input做初始化
PlaceHolder.className = 'blue'; //用于设这placeholder的className值;
PlaceHolder.init();
// 2)或者单独设置某个元素
PlaceHolder.create($('#t1'));
PlaceHolder.create($('#t2'));
PlaceHolder.create($('.t2'));
*/
PlaceHolder = {
_support: (function () {
return 'placeholder' in document.createElement('input');
})(),
// 提示文字的样式,需要在页面中其他位置定义
className: 'grey',
init: function () {
if (!PlaceHolder._support) {
var inputs = $('input');
PlaceHolder.create(inputs);
}
},
create: function (inputs) {
for (var i = 0, length = inputs.length; i < length; i++) {
var input = inputs.eq(i);
if (!PlaceHolder._support) {
PlaceHolder._setValue(input);
input.on('keydown', function () {
$(this).removeClass(PlaceHolder.className);
if ($(this).val() === $(this).attr('placeholder')) {
$(this).val('');
$(this).addClass(PlaceHolder.className);
}
});
input.on('keyup', function () {
$(this).removeClass(PlaceHolder.className);
if ($(this).val() === '') {
PlaceHolder._setValue($(this));
}
});
input.on('focus', function () {
if ($(this).val() === $(this).attr('placeholder')) {
PlaceHolder._moveCursor($(this));
}
})
}
}
},
_setValue: function (input) {
if ($.trim(input.val()) == '') {
input.addClass(PlaceHolder.className);
input.val(input.attr('placeholder'));
PlaceHolder._moveCursor(input);
} else {
input.removeClass(PlaceHolder.className);
}
},
_moveCursor: function (input) {
if (input.get(0).createTextRange()) {
var rng = input.get(0).createTextRange();
rng.move("character", 0);
rng.select();
}
}
}
PlaceHolder.className = 'blue';
PlaceHolder.init();
/*
// 页面初始化时对所有input做初始化
//PlaceHolder.className = 'blue'; //用于设这placeholder的className值;
//PlaceHolder.init();
// 或者单独设置某个元素
PlaceHolder.create($('#t1'));
PlaceHolder.create($('#t2'));
PlaceHolder.create($('.t2'));
*/
</script>
2:
<form id="form1">
<h3>在不支持placeholder的浏览器下,通过插入悬浮的span元素方式模拟</h3>
<p><label for="username1">用户名:</label><input type="text" name="username1" id="username1" placeholder="请输入用户名"
value="" required></p>
<p><label for="password1">密 码:</label><input type="password" name="password1" id="password1" placeholder="请输入密码"
value="" required></p>
<p><label for="address1">地 址:</label><input type="text" name="address1" id="address1" placeholder="请输入地址" value=""
required></p>
<p><label for="remarks1">备 注:</label><textarea placeholder="请输入备注" id="remarks1"></textarea></p>
</form>
<script src="jquery-1.9.1.js"></script>
<script>
var oForm1 = $('#form1');
var oForm1Inputs = $('#form1 input');
for (var i = 0; i < oForm1Inputs.length; i++) {
placeHolder(oForm1Inputs.eq(i));
}
var oForm1Textarea = $('textarea');
placeHolder(oForm1Textarea);
/**
* @name placeHolder
* @class 跨浏览器placeHolder,对于不支持原生placeHolder的浏览器
* @param {Object} obj 要应用placeHolder的表单元素对象
*/
function placeHolder(obj) {
if (!obj.attr('placeholder')) return;
var supportPlaceholder = 'placeholder' in document.createElement('input');
if (!supportPlaceholder) {
var defaultValue = obj.attr('placeholder');
var oWrapper = $('<div>'+defaultValue+'<div>');
var oMarginLeft = parseInt(obj.css('marginLeft')) ? parseInt(obj.css('marginLeft')) + 3 + 'px' : 3 + 'px';
var oMarginTop = parseInt(obj.css('marginTop')) ? obj.css('marginTop') : 1 + 'px';
var oPaddingLeft = obj.css('paddingLeft');
var oWidth = obj.outerWidth() - parseInt(obj.css('marginLeft')) + 'px';
var oHeight = obj.height + 'px';
var oLineHeight = obj.get(0).tagName.toLowerCase() == 'textarea' ? '' : obj.outerHeight() + 'px';
oWrapper.css({position:'absolute', color:'#ACA899', display:'inline-block', overflow:'hidden', fontFamily: obj.css('fromFamily'),
fontSize: obj.css('fontSize'), marginLeft:oMarginLeft, marginTop:oMarginTop, paddingLeft:oPaddingLeft, width:oWidth, height:oHeight, lineHeight:oLineHeight});
oWrapper.addClass('wrap-placeholder');
obj.before(oWrapper);
oWrapper.bind('click', function () {
obj.focus();
})
//绑定input或onpropertychange事件
/*
oninput 是 HTML5 的标准事件,对于检测 textarea, input:text, input:password 和 input:search 这几个元素通过用户界面发生的内容变化非常有用,
在内容修改后立即被触发,不像 onchange 事件需要失去焦点才触发。
*/
if (typeof(obj.get(0).oninput) == 'object') {
obj.get(0).addEventListener("input", changeHandler, false);
} else {
obj.get(0).onpropertychange = changeHandler;
}
function changeHandler() {
if($.trim(obj.val()) != ''){
oWrapper.hide();
}else{
oWrapper.show();
}
}
}
}
</script>
相关推荐
为了实现跨浏览器的`placeholder`兼容性,开发者通常需要借助JavaScript库或jQuery插件来模拟这一功能。本篇将探讨如何实现这一目标,同时分析提供的文件内容。 首先,`form4_placehold_value.html`很可能是测试...
为了解决这个问题,开发者通常会利用JavaScript来实现跨浏览器的`placeholder`兼容性处理。 标题"javascript版placeholder解决一些浏览器不支持placeholder属性的问题"指的就是通过JavaScript来模拟`placeholder`的...
jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、AJAX请求等任务,使得开发者能够更容易地实现跨浏览器的兼容性代码。 为了在IE7中实现`placeholder`兼容,首先需要在`index.html`中引入`jquery-...
因此,在现代项目中,我们更倾向于使用支持`placeholder`的现代浏览器,或者结合polyfill库来实现跨浏览器兼容。然而,对于仍需支持IE8的项目,`jquery-placeholder`无疑是一个可靠的解决方案。
jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理和AJAX交互等任务,使得开发者能更容易地实现跨浏览器的兼容性功能。`jquery-placeholder-master`可能是一个包含完整源代码、文档和示例的项目,用于在IE...
此外,你还可以使用现有的前端库和插件,如jQuery Placeholder或Modernizr,它们提供了更完善的跨浏览器解决方案,可以自动检测浏览器对`placeholder`的支持情况,并提供相应的polyfill。 总之,为确保登录表单的`...
为了改善用户体验,可以通过jQuery插件或脚本实现跨浏览器的placeholder兼容。 本文将详细介绍两种利用jQuery库快速解决input中placeholder值在IE浏览器中无法支持的方法。首先,了解在IE中placeholder无法显示的...
`jQuery Placeholder`插件是实现跨浏览器`placeholder`属性支持的一个有效工具,尤其对于那些需要兼容旧版IE浏览器的项目来说。通过简单的引入和初始化,我们就能为所有用户带来一致的用户体验,无论他们使用的...
利用jQuery,开发者可以快速实现跨浏览器的功能实现。 4. 什么是IE6? IE6是微软公司的Internet Explorer浏览器的第六个版本,发布于2001年。由于其设计理念较为落后,加上安全和兼容性问题,它在现代web开发中...
HTML5的`placeholder`属性是...虽然现代浏览器大多已经支持,但在处理跨浏览器兼容性问题时,了解如何用JavaScript和CSS来模拟`placeholder`效果是非常有必要的。这个压缩包提供的解决方案可以作为一个很好的学习资源。
此外,还可以使用一些现成的库,如jQuery Placeholder插件,它们已经处理了这些兼容性问题,只需要引入库并简单配置即可实现跨浏览器的提示文字。 总结来说,要实现`input`框中出现提示文字并兼容IE、火狐和谷歌,...
总结来说,"网页内容placeholder占位特效.zip"中的项目展示了如何通过HTML5的`placeholder`属性,配合jQuery和CSS来实现跨浏览器的占位符特效。这样的效果可以提高用户的交互体验,使网页表单更易用。在实际开发中,...
由于无法直接访问这个链接,我将基于常见的实践来解释如何实现一个跨浏览器的可编辑下拉框。 实现这样的功能,开发者通常会使用HTML、CSS和JavaScript(或者使用诸如jQuery、React、Vue等前端框架)。以下是一个...
总结起来,这个插件解决了H5`placeholder`属性在IE浏览器中的兼容性问题,通过代码封装和闭门技术实现了跨浏览器的支持。对于开发者来说,这是一个极好的学习资源,可以帮助他们提高在实际项目中处理浏览器兼容性...
如何实现跨浏览器的placeholder效果呢? 附件是我写的一个jquery插件,可以实现兼容IE7,IE8及以上浏览器的placeholder效果
为了确保跨浏览器兼容性,可以使用jQuery插件如`jquery.placeholder.js`,或者使用条件注释和polyfill来为不支持`placeholder`属性的浏览器添加兼容性支持。 5. **网络环境的影响**:在网络环境中,加载jQuery库和...
总之,WebKit CSS Hack是一种非常实用的技术,它可以帮助开发者解决跨浏览器兼容性问题。通过合理运用上述提到的方法,可以有效地确保网页在基于WebKit内核的浏览器(如Chrome和Safari)中表现出色。需要注意的是,...
在实际应用中,开发者通常会使用成熟的JavaScript库,如jQuery,来简化跨浏览器的兼容性问题处理。例如,jQuery插件`jQuery.placeholder`就是专为解决这个问题而设计的。它能自动检测并处理所有需要`placeholder`...
5. 注意不同浏览器对CSS属性获取的差异,以及如何编写跨浏览器兼容的代码。 以上内容详尽解释了如何使用jQuery在IE浏览器中实现输入框的`placeholder`功能,以及在这个过程中涉及到的技术点和注意事项。对于开发...