input 输入框获得/失去焦点时隐藏/显示文字/以及input默认文字颜色修改(jquery版以及JS)

很多搜索、登录、表单都会用到这个效果,但是我看了N多个网站,有90%以上是这么实现的:

复制代码 代码如下:

<input type="text" value="搜索关键字" onfocus="if(this.value == '搜索关键字') this.value = ''" onblur="if(this.value =='') this.value = '搜索关键字'" />


我是非常反对把 javascript 写在 html 标签里的,这和 style 写在 html 标签里一样,虽然不违反 W3C 标准,但也不推荐这么写。因为:
1.完全没有复用性可言,如果是个表单,输入框很多,每个都需要这样的效果,那就每个都这么处理吗?
2.如果要修改其中的提示文字,费时费力又不好维护。
3.我们倡导结构(html)、表现(css)、行为(javascript)三者分离,这才是一个好的页面。
那要怎么写才能实现这个效果,而且既有复用性,又好维护,又不需要把 js 写进 html 里呢?
具体方法如下:

 

 

 

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta http-equiv="X-UA-COMPATIBLE" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script src="js/jquery-1.11.1.min.js"></script>
</head>
<body>

<div><input type="text" value="提示测试" class="input_test" /></div>
<div><input type="text" value="请输入搜索关键" class="input_test" /></div>



<script type="text/javascript">
$(function(){
    $('.input_test').bind({
        focus:function(){
            if (this.value == this.defaultValue){
                this.value="";
            }
        },
        blur:function(){
            if (this.value == ""){
                this.value = this.defaultValue;
            }
        }
    });
})
</script>
</body>
</html>

 

 

JS以及默认颜色修改输入文字后颜色修改

<input type="text" value="搜索" style="color:#f00;" onfocus="if(value=='搜索'){this.style.color='#000';value=''}" onblur="if(value==''){this.style.color='#f00';value='搜索'}"/>

posted on 2015-11-16 15:22  鬼鬼丫404  阅读(1167)  评论(0编辑  收藏  举报

导航