js+css实现增加表单可用性之提示文字


Posted in Javascript onJune 03, 2013

平常设计表单的时候,我们会加入一些提示文字,比如说在搜索框里,我们会提示“请输入关键字”,并在搜索框得到焦点和失去焦点的时候适时的隐藏和显示,最常见的做法是利用value来设置:

<form id="search"> 
<input type="text" id="keyword" name="keyword" value="请输入关键字"> 
<button>搜索</button> 
</form> 
<script> 
document.getElementById("keyword").onfocus = function() { 
if (document.getElementById("keyword").value == "请输入关键字") { 
document.getElementById("keyword").value = ""; 
} 
} 
document.getElementById("keyword").onblur = function() { 
if (document.getElementById("keyword").value == "") { 
document.getElementById("keyword").value = "请输入关键字"; 
} 
} 
document.getElementById("search").onsubmit = function() { 
var keyword = document.getElementById("keyword").value; 
if (keyword == "" || keyword == "请输入关键字") { 
alert("请输入关键字"); 
return false; 
} 
return true; 
} 
</script>

如此的代码虽然实现了我们要的功能,但却不干净,原因在于“请输入关键字”这样的文本仅仅是提示文字而已,而不是value,虽然技术上没有大问题,但很多时候还是显得麻烦,比如说我们可能像让提示文字显示的颜色是灰色,而用户键入的文本则显示黑色。
下面看看如何利用css来实现更好的方式:
<style> 
#wrapper { position: relative; display: inline; } 
#description { position: absolute; left: 1px; color: #999999; display: none; } 
</style> 
<form id="search"> 
<div id="wrapper"> 
<label for="keyword" id="description">请输入关键字</label> 
<input type="text" id="keyword" name="keyword"> 
</div> 
<button>搜索</button> 
</form> 
<script> 
window.onload = function() { 
if (!document.getElementById("keyword").value) { 
document.getElementById("description").style.display = "inline"; 
} 
}; 
document.getElementById("keyword").onfocus = function() { 
if (!document.getElementById("keyword").value) { 
document.getElementById("description").style.display = "none"; 
} 
} 
document.getElementById("keyword").onblur = function() { 
if (!document.getElementById("keyword").value) { 
document.getElementById("description").style.display = "inline"; 
} 
} 
document.getElementById("search").onsubmit = function() { 
if (!document.getElementById("keyword").value) { 
alert("请输入关键字"); 
return false; 
} 
return true; 
} 
</script>

这样的实现方式虽然CSS,JS代码都多了一些,但是结构更合理,通过引入label来显示提示文字(通过CSS的position属性定位),让value本身更单纯,而且提示文字和用户输入的文本在样式更容易控制,比如颜色的深浅,从而提高表单可用性。
Javascript 相关文章推荐
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
5个javascript的数字格式化函数分享
Dec 07 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
详解JavaScript函数对象
Nov 15 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
vue自定义底部导航栏Tabbar的实现代码
Sep 03 Javascript
js实现简单掷骰子效果
Oct 24 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
js实现tab栏切换效果
Aug 02 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
Jun 02 #Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 #Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 #Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 #Javascript
js内存泄露的几种情况详细探讨
May 31 #Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 #Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 #Javascript
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
js分页代码分享
2014/04/28 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
javascript如何写热点图
2015/12/08 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python颜色随机生成器的实例代码
2020/01/10 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
思想汇报格式
2014/01/05 职场文书
办公室禁烟通知
2015/04/23 职场文书
环保宣传语大全
2015/07/13 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python