e.FLY

邮箱登录自动提示各种邮箱
  1 var index = 0; //标记提示文本DIV数组选中的下标
  2         $(function(){
  3                 var name = _getCookie("member_username");
  4                 var pwd = _getCookie("member_password");
  5                 if(name != "undefined" && pwd != "undefined"){
  6                     $("#member_username").val(name);
  7                     $("#member_password").val(pwd);
  8                 }
  9                 
 10                 var a = 0; //当用上下选择提示文本时,控制DIV的suggestOut事件不使用
 11                 var allEmail = ""; //提示文本中的email
 12                 var emails1=["@qq.com","@163.com","@sohu.com","@yahoo.com","@yahoo.com.cn","@yahoo.cn","@sina.com"];
 13                 $("#frmLoginMember #member_username")
 14                     .val("请输入注册邮箱或用户名")
 15                     .css("color","#ddd")
 16                     .live("focus",function(){
 17                             if($.trim($(this).val()) == "请输入注册邮箱或用户名"){
 18                                 $(this).val("").css("color","#000");
 19                             }
 20                         })
 21                     .live("blur",function(){
 22                             if($.trim($(this).val()) == ""){
 23                                 $(this).val("请输入注册邮箱或用户名").css("color","#ddd");
 24                             };
 25                         })
 26                     .live("keyup",function(e){
 27                             var member_username = document.getElementById("member_username");
 28                             var _top = member_username.offsetTop;
 29                             var _left = member_username.offsetLeft;
 30                             var _width = member_username.offsetWidth;
 31                             var _height = member_username.offsetHeight;
 32                             
 33                             var top = member_username.getBoundingClientRect().top;
 34                             var left = member_username.getBoundingClientRect().left;
 35                                 
 36                             var email_qian=""; //emial地址@前面的字符
 37                             var email_hou=""; //包括@后面的字符
 38                             if(e.keyCode==38||e.keyCode==40||e.keyCode==13){ //当按下上下回车时不使用该事件
 39                                 return;
 40                             }
 41                             var email = $.trim($(this).val()); //取得email的value
 42         //                    if(email.length>1&&email.indexOf("@")>-1){
 43                             if(email.length>1){
 44                                 if(email.indexOf("@")>-1){
 45                                     email_qian=email.substring(0,email.indexOf("@"));
 46                                     email_hou=email.substring(email.indexOf("@"),email.length);
 47                                 }else{
 48                                     email_qian=email;
 49                                 }
 50                                 
 51                                 var str = "";
 52                                 var flag = 0;
 53                                 for(var i =0;i<emails1.length;i++){//把匹配的emails1数组里的数据遍历到HTML中
 54                                     if(emails1[i].indexOf(email_hou)>-1){
 55                                         if(email_hou==emails1[i]){ //输入了一个完整的email地址则取消提示文本
 56                                             flag=0;
 57                                             break;
 58                                         }
 59                                         flag=1;
 60                                         allEmail = email_qian+emails1[i];
 61                                         str+="<div onmouseover='javascript:suggestOver(this);'";
 62                                         str+=" onmouseout='javascript:suggestOut(this);'";
 63                                         str+=" onclick='javascript:setSearch(this.innerHTML);'";
 64                                         str+=" class='suggest_link'>"+allEmail+"</div>";
 65                                         index=0;
 66                                     }
 67                                 }
 68                                 if(flag==1){
 69                                     var _div = document.getElementById("suggest");
 70                                         if($.browser.msie){
 71                                             _div.style.top = top + _height + 3;
 72                                             _div.style.left = left + 1;
 73                                         }else{
 74                                             _div.style.top = top + _height;
 75                                             _div.style.left = left;
 76                                         }
 77                                             
 78                                         
 79                                     $("#suggest")
 80                                         .html(str)
 81                                         .width(_width)
 82                                          .show();
 83                                 }else{
 84                                     $("#suggest").hide();
 85                                 }
 86                             }else{
 87                                 $("#suggest").hide();
 88                             }
 89                         })
 90                         .live("keydown",function(e){
 91                             var suggests = $("[onmouseover]"); //取得DIV提示文本数组
 92                             if(e.keyCode==40){ //
 93                                 if(index<suggests.length-1){
 94                                     index++;
 95                                 }
 96                             }
 97                             if(e.keyCode==38){ //
 98                                 index--;
 99                                 if(index<0){
100                                     index=0;
101                                 }
102                             }
103                             if(e.keyCode==13){ //回车
104                                 setSearch($(suggests[index]).html());
105                                 return;
106                             }
107                             if(suggests.length>0){ //当有提示文本时 按上下选中时 要把其它没选中的DIV样式还原
108                                 suggests[index].className="suggest_link_over";
109                                 for(var i = 0;i<suggests.length;i++){
110                                     if(i!=index){
111                                         suggests[i].className="suggest_link";
112                                     }
113                                 }
114                                 a=1; //上下键按完后 控制可以用鼠标选中 DIV的suggestOut事件使用
115                             }
116                         });
117                 
118                     $("body").mousedown(function(event){
119                         if($.browser.msie){
120                             if(event.button==1){
121                                 $("#suggest").hide();
122                             }
123                         }else{
124                             if(event.button==0){
125                                 $("#suggest").hide();
126                             }
127                         }
128                     });
129                 });
130 function suggestOver(obj){
131                 a=0;
132                 var suggests = $("[onmouseover]");
133                 for(var i = 0;i<suggests.length;i++){ //用鼠标选中DIV时 把其它没选中的DIV样式还原
134                     if(suggests[i]==obj){
135                         index = i; //标记当前选中的DIV的数组下标
136                     }
137                     suggests[i].className="suggest_link";
138                 }
139                 obj.className = "suggest_link_over";
140             }
141             function suggestOut(obj){
142                 if(a==0){ //当用上下选择提示文本时,控制DIV的suggestOut事件不使用
143                     obj.className="suggest_link";
144                 }
145             }
146             function setSearch(email){
147                 $("#frmLoginMember #member_username").val(email);
148                 $("#suggest").hide();
149             }
 1 <style type="text/css"> 
 2         .suggest_link {
 3             background-color: #FFFFFF;
 4             padding: 1px;
 5             line-height: 20px;
 6         }
 7         
 8         .suggest_link_over {
 9             background-color: #E8F2FE;
10             cursor: default;
11         }
12         
13         #suggest {
14             position:absolute;
15             background-color: #FFFFFF;
16             text-align: left;
17             border: 1px solid #ddd;
18             display: none;
19         }
20         #suggest div{
21             cursor: pointer;
22             color:#6b6b6b;
23             font-size: 12px;
24             font-family: Arial;
25         }
26         </style>
1 <td align="left">
2                             <input style="width: 155px;" class="x-input inputstyle" name="member.username" id="member_username" tabindex="1" value="" type="text" reg="\S" tip="请输入用户名"/>
3                             <div id="suggest"></div>
4                             <a href="${path }/jsp/newweb/user/user_registerone.jsp">立即注册</a>
5                         </td>

 

posted on 2012-04-10 22:43  e.FLY  阅读(671)  评论(0)    收藏  举报