问题:如何让文本框内的提示信息在激活文本框时清空?
解决思路: 当需要填写的文本框很多时,在每个文本框内写上提示信息是个不错的办法,但这样一来用户在填写该项时必须先把提示文本删掉,非常不方便。所以应该让文本框更人性化一点,在focus时检查当前值是否为文本框的默认值,是则清空,否则保持不变,而在blur时检查文本框的内容是否为空,是则重置为默认值,否则保持不变。
具体步骤:
1.设置文本框的默认值或提示信息。
<input value="填写您的昵称"> <input value="填写您的生日(1900-01-01)">
2.判断、清空文本框内容的函数。
function cls(){ with(event.srcElement) if(value==defaultValue) value="" }
3.判断、还原文本框内容的函数。
function res(){ with(event.srcElement) if(value=="") value=defaultValue }
4.给文本框添加触发事件onfocus和onblur,调用函数处理。完整代码:
<script> function cls(){ //捕获触发事件的对象,并设置为以下语句的默认对象 with(event.srcElement) //如果当前值为默认值,则清空 if(value==defaultValue) value="" } function res(){ //捕获触发事件的对象,并设置为以下语句的默认对象 with(event.srcElement) //如果当前值为空,则重置为默认值 if(value=="") value=defaultValue } </script> <input value="填写您的昵称" onfocus="cls()" onblur="res()"> <input value="填写您的生日(1900-01-01)" onfocus="cls()" onblur="res()">
注意:本例的方法对大部分表单控件都有效,比如多行文本框。
特别提示
运行完整代码,在鼠标第一次单击文本框时该文本框内容将被清空,在文本框外单击时文本框内容将还原回默认值。如果改变了文本框的值,将不再有任何变化。图1.4.28为代码运行时的初始效果,图1.4.29为鼠标单击第二个文本框后的效果。
特别说明
本例主要是对象的defaultValue属性和onfocus、onblur事件的应用。 defaultValue 设置或获取对象的初始内容。 onblur 在对象失去输入焦点时触发。 onfocus 当对象获得焦点时触发。 |