input 输入框获得/失去焦点时隐藏/显示文字
2013-04-01 21:36
645 查看
这个标题可能比较拗口不好理解,但是我相信所有的人都见过这个效果,大家可以看本站右上角的搜索输入框,默认显示着“输入搜索内容”的提示,当这个 input 输入框获得焦点时,就自动清空等待用户输入,当用户啥也没输入就离开这个 input 输入框时,输入框内又再次显示“输入搜索内容”的提示。是不是很常见?很多搜索、登录、表单都会用到这个效果,但是我看了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 里呢?
相信我们都有加载 jQuery,我就基于 jQuery 写了一个方法,先看
DEMO,具体方法如下:
1、html 部分:
<input
type="text"
id="input_test"
value="input 提示测试"
/>
2、引入 jQuery:
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
3、执行脚本:
$(function() {
var inputEl = $('#input_test'),
defVal = inputEl.val();
inputEl.bind({
focus: function() {
var _this = $(this);
if (_this.val() == defVal) {
_this.val('');
}
},
blur: function() {
var _this = $(this);
if (_this.val() ==
'') {
_this.val(defVal);
}
}
});
})
实现的最终效果是一样一样的,或许是我个人的代码洁癖,但我相信,好代码从细节开始!
<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 里呢?
相信我们都有加载 jQuery,我就基于 jQuery 写了一个方法,先看
DEMO,具体方法如下:
1、html 部分:
<input
type="text"
id="input_test"
value="input 提示测试"
/>
2、引入 jQuery:
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
3、执行脚本:
$(function() {
var inputEl = $('#input_test'),
defVal = inputEl.val();
inputEl.bind({
focus: function() {
var _this = $(this);
if (_this.val() == defVal) {
_this.val('');
}
},
blur: function() {
var _this = $(this);
if (_this.val() ==
'') {
_this.val(defVal);
}
}
});
})
实现的最终效果是一样一样的,或许是我个人的代码洁癖,但我相信,好代码从细节开始!
相关文章推荐
- input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
- input 输入框获得/失去焦点时隐藏/显示文字
- input 输入框获得/失去焦点时隐藏/显示文字
- input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
- input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
- 我的Web学习之路1——input,textarea获得/失去焦点时隐藏/显示文字
- jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
- jquery 获得焦点的时候,焦点时文本框清空,失去焦点时又显示默认文字
- 今天写一个注册或是登录时都可以用的东西,就是在input方框中点击,方框内文字消失,失去焦点,则又显示
- 输入框的提示信息(获得焦点和失去焦点时显示提示信息)
- 记录H5页面IOS中input输入框失去焦点后,键盘隐藏
- input获取焦点时候value值隐藏,失去焦点的时候显示
- js控制输入框获得和失去焦点时状态显示的方法
- js控制输入框获得和失去焦点时状态显示的方法
- jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
- 文章的关键字获得焦点显示提示内容,关键字失去焦点隐藏提示内容
- 关于输入框得到焦点时文本框清空,失去焦点时又显示默认文字,值发生改变时不再恢复默认文字的两种方法
- jQuery表单Input文本框默认说明文字获得焦点后消失效果
- jQuery表单Input文本框默认说明文字获得焦点后消失效果
- js实现input文本框点击时文字消失,失去焦点时文字出现