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 相关文章推荐
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
Jan 25 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
May 10 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
Dec 05 Javascript
浅析JavaScript中的特殊数据类型
Dec 15 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
echarts饼图各个板块之间的空隙如何实现
Dec 01 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP类的反射用法实例
2014/11/03 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
浅析python继承与多重继承
2018/09/13 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python中time包实例详解
2021/02/02 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
语文教学感言
2014/02/06 职场文书
幼儿园见习报告
2014/10/30 职场文书
行风评议整改报告
2014/11/06 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书