查看文章 |
增加表单可用性之提示文字
2010年07月02日 星期五 下午 7:21
欢迎访问我的新主页:http://huoding.com/ 作者:老王 我的前端技术纯属门外汉,不过代码总要写,所以记了一些简单的笔记,请勿见笑: 平常设计表单的时候,我们会加入一些提示文字,比如说在搜索框里,我们会提示“请输入关键字”,并在搜索框得到焦点和失去焦点的时候适时的隐藏和显示,最常见的做法是利用value来设置: 代码(at pastebin.com): 01 <form id="search"> 02 <input type="text" id="keyword" name="keyword" value="请输入关键字"> 03 <button>搜索</button> 04 </form> 05 06 <script> 07 document.getElementById("keyword").onfocus = function() { 08 if (document.getElementById("keyword").value == "请输入关键字") { 09 document.getElementById("keyword").value = ""; 10 } 11 } 12 document.getElementById("keyword").onblur = function() { 13 if (document.getElementById("keyword").value == "") { 14 document.getElementById("keyword").value = "请输入关键字"; 15 } 16 } 17 document.getElementById("search").onsubmit = function() { 18 var keyword = document.getElementById("keyword").value; 19 if (keyword == "" || keyword == "请输入关键字") { 20 alert("请输入关键字"); 21 return false; 22 } 23 return true; 24 } 25 </script> 如此的代码虽然实现了我们要的功能,但却不干净,原因在于“请输入关键字”这样的文本仅仅是提示文字而已,而不是value,虽然技术上没有大问题,但很多时候还是显得麻烦,比如说我们可能像让提示文字显示的颜色是灰色,而用户键入的文本则显示黑色。 下面看看如何利用css来实现更好的方式: 代码(at pastebin.com): 01 <style> 02 #wrapper { position: relative; display: inline; } 03 #description { position: absolute; left: 1px; color: #999999; display: none; } 04 </style> 05 06 <form id="search"> 07 <div id="wrapper"> 08 <label for="keyword" id="description">请输入关键字</label> 09 <input type="text" id="keyword" name="keyword"> 10 </div> 11 <button>搜索</button> 12 </form> 13 14 <script> 15 window.onload = function() { 16 if (!document.getElementById("keyword").value) { 17 document.getElementById("description").style.display = "inline"; 18 } 19 }; 20 document.getElementById("keyword").onfocus = function() { 21 if (!document.getElementById("keyword").value) { 22 document.getElementById("description").style.display = "none"; 23 } 24 } 25 document.getElementById("keyword").onblur = function() { 26 if (!document.getElementById("keyword").value) { 27 document.getElementById("description").style.display = "inline"; 28 } 29 } 30 document.getElementById("search").onsubmit = function() { 31 if (!document.getElementById("keyword").value) { 32 alert("请输入关键字"); 33 return false; 34 } 35 return true; 36 } 37 </script> 这样的实现方式虽然CSS,JS代码都多了一些,但是结构更合理,通过引入label来显示提示文字(通过CSS的position属性定位),让value本身更单纯,而且提示文字和用户输入的文本在样式更容易控制,比如颜色的深浅,从而提高表单可用性。 BTW:还有很多增加表单可用性的方式,再比如这个:通过ime-mode控制输入法 |
最近读者:

