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 相关文章推荐
关于document.cookie的使用javascript
Oct 29 Javascript
js动态切换图片的方法
Jan 20 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
深入理解vue中的$set
Jun 01 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
EasyUI Tree树组件无限循环的解决方法
Sep 27 Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
vue权限问题的完美解决方案
May 08 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
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python中的装饰器用法详解
2015/01/14 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python中特殊函数集锦
2015/07/27 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Pytorch之保存读取模型实例
2019/12/30 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
材料化学应届生求职信
2013/10/09 职场文书
五年级学生期末评语
2014/12/26 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android