查看: 11750|回复: 0
打印 上一主题 下一主题

用jQuery处理文本框的焦点[focus]状态

[复制链接]
跳转到指定楼层
1#
发表于 2009-12-26 10:39:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
我们知道,浏览器的文本框的聚焦(focus)样式可以通过CSS的伪类:focus来设置。假设我们有这么一段代码:

<form>
<dl>
<dt>Name: <dt>
<dd><input type="text" /></dd>
<dt>Password: <dt>
<dd><input type="password" /></dd>
<dt>Textarea: <dt>
<dd><textarea></textarea></dd>
</dl>
</form>

我们可以通过下面的CSS来给它定义:

input[type="text"]:focus, input[type="password"]:focus, textarea:focus { border: 1px solid #ccc; background: #fcc; }
这样定义是不是很简单。但却有个问题。可万恶的IE6去不支持这个foucs。那怎么办,只能用JavaScript来解决了。
在这里我们用看看怎么用jQuery处理(发现最近很迷恋JQ…囧)。我们先用JQ来获取元素。JQ的选择器用法之前也介绍了一些,在这里我们用下面的代码获取input元素:

$("input[@type='text'], input[@type='password'], textarea")
获取元素后就要通过JQ的事件处理onfocus来处理,不过JQ并不喜欢这个on,所以就直接foucs。我们来看下现在的代码:

$("input[@type='text'], input[@type='password'], textarea").focus( function(){ $(this).css({background:"#fcc", border:"1px solid #ccc"})} );
现在刷新下看是不是成功了。虽然效果实现了但还没完成,在上面的代码中,只有处理聚焦的情况,那么当失去焦点的时候呢?嗯,我们不要想当然,失焦?那么聚焦的样式不是就会自动清楚清除了吗?事实上不会的,除非我们明确告诉它。OK,我们继续处理失去焦点时的状态:

$(this).blur(function(){$(this).css({background: "transparent", border: "1px solid #FFc"})})
说到这里不得不说下jQuery的强大之处了,jQuery对象可以接受无数个函数回调/消息/方法,也就是传说中的Chainability。也就是说我们不必要分两行写,一气呵成:

$("input[@type='text'], input[@type='password'], textarea").focus( function(){ $(this).css({background:"#fcc", border:"1px solid #ccc"})}).$(this).blur(function(){$(this).css({background: "transparent", border: "1px solid #FFc"})});
现在真的完成了,但还是有些可以做得更好的地方,比如上面的JS代码中直接写入CSS。如果你觉得这样不好的话可以把CSS提出来,定义一个类(IE_focus)。然后把“.css({background:”#fcc”, border:”1px solid #ccc”})”换成“.addClass(”IE_focus”)”。还有上面所有的JS都只是针对IE的,其他浏览器都可以使用CSS来实现。SO…我们可以再加个判断($.browser.msie)。最终完整的代码如下:

$(document).ready(function(){
if ($.browser.msie){
      $("input[@type='text'], input[@type='password'], textarea").focus( function(){ $(this).css({background:"#fcc", border:"1px solid #ccc"})}).$(this).blur(function(){$(this).css({background: "transparent", border: "1px solid #FFc"})});
}
});
顺便在这里介绍一个JQ的插件[jQBrowser],用来判断浏览器的类型。支持的浏览器类型很多:

var aol         = $.browser.aol();       // AOL Explorer
var camino    = $.browser.camino();    // Camino
var firefox     = $.browser.firefox();   // Firefox
var flock     = $.browser.flock();     // Flock
var icab      = $.browser.icab();      // iCab
var konqueror = $.browser.konqueror(); // Konqueror
var mozilla   = $.browser.mozilla();   // Mozilla
var msie      = $.browser.msie();      // Internet Explorer Win / Mac
var netscape  = $.browser.netscape();  // Netscape
var opera     = $.browser.opera();     // Opera
var safari    = $.browser.safari();    // Safari


更详细的内容请查看官方的说明:http://davecardwell.co.uk/javasc ... uery-browserdetect/
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表