html5 setvalue方法,HTML5 INPUT placeholder及兼容性处理

HTML5对Web Form做了许多增强,比如input新增的type类型、Form Validation等。Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。以前要实现这效果都是用JavaScript来控制才能实现:

由于placeholder是个新增属性,目前只有少数浏览器支持,如何检测浏览器是否支持它呢?(更多HTML5/CSS3特性检测可以访问)

function hasPlaceholderSupport() {

return 'placeholder' in document.createElement('input');

}

默认提示文字是灰色的,可以通过CSS来改变文字样式:/* all */

::-webkit-input-placeholder { color:#f00; }

input:-moz-placeholder { color:#f00; }

/* individual: webkit */

#field2::-webkit-input-placeholder { color:#00f; }

#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }

#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

/* individual: mozilla */

#field2:-moz-placeholder { color:#00f; }

#field3:-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }

#field4:-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

兼容其他不支持placeholder的浏览器:

var PlaceHolder = {

_support: (function() {

return 'placeholder' in document.createElement('input');

})(),

//提示文字的样式,需要在页面中其他位置定义

className: 'abc',

init: function() {

if (!PlaceHolder._support) {

//未对textarea处理,需要的自己加上

var inputs = document.getElementsByTagName('input');

PlaceHolder.create(inputs);

}

},

create: function(inputs) {

var input;

if (!inputs.length) {

inputs = [inputs];

}

for (var i = 0, length = inputs.length; i

input = inputs[i];

if (!PlaceHolder._support && input.attributes && input.attributes.placeholder) {

PlaceHolder._setValue(input);

input.addEventListener('focus', function(e) {

if (this.value === this.attributes.placeholder.nodeValue) {

this.value = '';

this.className = '';

}

}, false);

input.addEventListener('blur', function(e) {

if (this.value === '') {

PlaceHolder._setValue(this);

}

}, false);

}

}

},

_setValue: function(input) {

input.value = input.attributes.placeholder.nodeValue;

input.className = PlaceHolder.className;

}

};

//页面初始化时对所有input做初始化

//PlaceHolder.init();

//或者单独设置某个元素

//PlaceHolder.create(document.getElementById('t1'));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值