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)
Mar 09 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
Apr 18 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
Oct 17 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
jQuery简单创建节点的方法
Sep 09 Javascript
JS常用算法实现代码
Nov 14 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 Javascript
react中props 的使用及进行限制的方法
Apr 28 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
默默简单的写了一个模板引擎
2007/01/02 PHP
php 获取全局变量的代码
2011/04/21 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
PHP培训要多少钱
2017/06/06 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
谈谈JavaScript的New关键字
2016/08/26 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
python删除不需要的python文件方法
2018/04/24 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
Python安装Bs4的多种方法
2020/11/28 Python
html5时钟实现代码
2010/10/22 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
医学专业五年以上个人求职信
2013/12/03 职场文书
新党章心得体会
2014/09/04 职场文书
校长新学期致辞
2015/07/30 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python