jquery实现输入框获取焦点后文字消失的代码

发布时间:2020-07-12编辑:脚本学堂
本文介绍的方法,实现的功能为:文本框中提示有输入的信息,当点击文本框,提示信息自动消失。失去焦点时,提示文字恢复。现在很多网站上,特别是搜索部分,均是这样的效果。

1,首先,做一个简单的。
创建一个html文件:
 

复制代码 代码示例:
<html>
<head>
<title>input test</title>
<meta name="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
//css代码部分
</style>
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
//jquery代码部分
</script>
</head>
<body>
<form method="POST" id="user" action="">
User Name:<input type="text" name="username" value="Enter your name" /><br/>
PassWord:<input type="password" name="password" value="Enter your password" />
<input type="submit" name="sub" value="login" />
</form>
</div>
</body>
</html>

下面加入jquery代码:
用到了click 和blur内置事件类型处理,而且,只是对username框有效(因为密码框还有别的因素考虑)。
 

复制代码 代码示例:
<html>
<head>
<title>input test_www.jb200.com</title>
<meta name="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
</style>
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#username").click(
function(){
if($(this).val()=="Enter your name"){
$(this).val("");
}
})
$("#username").blur(
function(){
if($(this).val()=="")
{
$(this).val("Enter your name");
}
})
});
</script>
</head>
<body>
<div id="content">
<form method="POST" id="user" action="">
User Name:<input type="text" id="username" name="username" value="Enter your name" /><br/>
PassWord:<input type="password" name="password" value="Enter your password" />
<input type="submit" name="sub" value="login" />
</form>
</div>
</body>
</html>

2,功能改进后的代码
以下原型代码的不足:
1,也许可以对密码框也使用这种方式,但是密码框的type类型是password,它不能显示,何来提示文字?
2,if($(this).val()=="")这种写法可以接受,但是 if($(this).val()=="Enter your name"),可能你还想输这个呢...
3,提示文字用别的灰色的粗体表示,这样交互性是不是更强?
4,既然想要用两种字体表示,能不能把他们提取出来?写在.css里?这个是可以重用的啊!

解决办法:
1,密码框先让它的type是text的,等到点击了,我们再设置成password
2,用个变量来表示是否要切换吧。
3,设置不同的css.
4,用attr("class","class1"),attr("class","class2")来切换class,而不是引用id.(也就是说用.不用#)

代码如下:
 

复制代码 代码示例:
<html>
<head>
<title>input test_www.jb200.com</title>
<style type="text/css">
.default {
font-weight:bold;
color:#787878;
}
.puton{
font-weight:normal;
color:black;
}
</style>
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var b=true;
$("#username").click(
function(){
if(b==true){
$(this).val("");
$(this).attr("class","puton");
b=false;
}
}
)
$("#username").blur(
function(){
if( $(this).val()==""){
$(this).val("Enter your name");
$(this).attr("class","default");
b=true;
}
}
)
});
$(document).ready(function(){
var b=true;
$("#password").click(
function(){
if(b==true){
$(this).val("");
$(this).attr("type","password");
$(this).attr("class","puton");
b=false;
}
})
$("#password").blur(
function(){
if( $(this).val()==""){
$(this).val("Enter your password");
$(this).attr("type","text");
$(this).attr("class","default");
b=true;
}
}
)
});
</script>
</head>
<body>
<div id="content">
<form method="POST" id="user" action="">
User Name:<input type="text" id="username" class="default" name="username" value="Enter your name" /><br/>
PassWord:<input type="text" id="password" class="default" name="password" value="Enter your password" />
<input type="submit" name="sub" value="login" />
</form>
</div>
</body>
</html>

这节就介绍这些了,用jquery实现输入框焦点文字的方法,感觉如何呢?
哪位有更好的办法,欢迎分享一下哦。