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 相关文章推荐
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
jQuery+ajax读取并解析XML文件的方法
Sep 09 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
ES6 async、await的基本使用方法示例
Jun 06 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
javascript下function声明一些小结
2007/12/28 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
MySQL如何使备份得数据保持一致
2022/05/02 MySQL