js中的焦点事件问题

在web页面中,经常要实现这样一个js功能:鼠标焦点落到输入框内,输入框原有默认值消失,当失去焦点时,如果用户未输入任何内容,怎还是显示默认值。

 

今天在修改一页面时,发现一个问题:在页面是可以实现上述功能,但提交表单后,由于在服务端数据校验不通过时(为测试服务端的校验功能,屏蔽了前端的js校验。),alert 弹提示框后,再history.back(-1);返回表单填写页时,表单中默认内容是用户输入的不合法的内容(到此处没问题),但是当鼠标焦点落到输入框内时,原有不合法的内容就消失了,用户得从头输入,用户体验不太好,查看了原js,是由一个函数完成的(此函数的没看太明白),如下:

 

屏蔽了上述函数,对各input元素,添加了 Onblur(失去焦点)、onfocus(获得焦点)的事件响应。大概思路是:

blur时,检查元素的值是否等于'',如果是,就修改其值为默认值,如果不是就不做操作

focus时,检查元素的值是否等于默认值,如果是,就修改其值为'',如果不是就不做操作

 

具体代码如下:

1、html页面中(部分)

<textarea cols="84" rows="7" name="code" class="c-sharp">&lt;p class="row"&gt;&lt;label class="col1 big stress" for="phone"&gt;您的电话:&lt;/label&gt;&lt;input class="text" id="phone" type="text" name="phone" value="为了方便联系,请您留下手机号" οnkeydοwn="return test(event);" οnfοcus="return clean_default('phone');" οnblur="return set_default('phone');"/&gt;&lt;/p&gt; &lt;p class="row"&gt;&lt;label class="col1 big stress" for="email"&gt;您的邮箱:&lt;/label&gt;&lt;input class="text" id="email" type="text" name="email" value="为了方便联系,请您留下邮箱地址" οnfοcus="return clean_default('email');" οnblur="return set_default('email');"/&gt;&lt;/p&gt;</textarea>

 

2、js

 

这样就可以实现最开始的功能了,这样写有2个缺点:

1、input元素默认值内容修改时,js将失效

2、每添加一个input都需要添加相应的判断代码

 

---- 以后哪天找到更好的方法,再慢慢改进!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值