placeholder是html5的新属性,可想而知,仅支持html5的浏览器才支持placeholder,目前最新的firefox、chrome、safari以及ie10都支持,ie6到ie9都不支持。然而PC端页面也常常需要用到这个属性,效果表现为当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。
要如何解决ie9以下浏览器无法支持的问题呢,可参考天下手游官网: http://tx.163.com/index.html
大概的代码如下:
1
2
3
4
5
6
7
|
<
form
method
=
"post"
class
=
"ios_form"
>
<
input
type
=
"text"
class
=
"text urs-id"
placeholder
=
"网易通行证"
/>
<
input
type
=
"text"
class
=
"text phone-num"
placeholder
=
"手机号码"
maxlength
=
"11"
/>
<
input
type
=
"text"
class
=
"text code"
placeholder
=
"输入验证码"
maxlength
=
"6"
/>
<
a
href
=
"javascript:;"
class
=
"code-img"
id
=
"getIosCode"
>获取验证码</
a
>
<
a
href
=
"javascript:;"
class
=
"submitBtn"
>提交</
a
>
</
form
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
var
Placeholer =
function
(){
//判断是否支持placeholder
function
isPlaceholer() {
return
'placeholder'
in
document.createElement(
'input'
);
}
//取位置和宽高
function
getOffset($obj) {
var
offset = $obj.offset();
return
{
left: $obj.position().left,
top: $obj.position().top,
wid: $obj.width(),
hei: $obj.height()
}
}
$.fn.extend({
placeholder:
function
() {
if
(!isPlaceholer()) {
$(
this
).each(
function
(index, elem) {
var
$input = $(elem),
$label =$(
'<label class="labelPlaceholder labelPlaceholder'
+(index+1)+
'">'
+ $input.attr(
'placeholder'
) +
'</label>'
),
offset = getOffset($input),
styleParams = {
'width'
: offset.wid,
'height'
: offset.hei,
'position'
:
'absolute'
,
'left'
: offset.left,
'top'
: offset.top
};
if
($input[0].nodeName ===
'INPUT'
){
styleParams.lineHeight = offset.hei +
'px'
;
var
_index = $input.index(
'input'
)+1,
_className =
'.labelPlaceholder'
+_index;
}
else
{
var
_index = $input.index(
'textarea'
)+1,
_className =
'labelTextAreaPlaceholder'
+_index;
$label.addClass(_className);
_className =
'.'
+ _className;
}
$input.parent().find(_className).remove();
$input.after($label);
$label.css(styleParams);
if
($input.val() !=
''
) {
$label.hide();
}
$label.click(
function
() {
$input.focus();
})
$input.on(
'input propertychange'
,
function
() {
if
($(
this
) .val() ==
''
) {
$label.show();
}
else
{
$label.hide();
}
}).on(
'blur'
,
function
() {
if
($(
this
).val() ==
""
) {
$label.show();
}
})
});
}
}
})
}();
$(
'.ios_form input'
).Placeholer();
|