[JavaScript] jQuery 输入邮箱地址时自动提示  →→→→→进入此内容的聊天室

来自 , 2019-07-26, 写在 JavaScript, 查看 107 次.
URL http://www.code666.cn/view/7e8d7e5c
  1. ( function ( $ )
  2. {
  3.         $.fn.mailAutoComplete = function ( options )
  4.         {
  5.                 var defaults =
  6.                 {
  7. boxClass: "mailListBox", //外部box样式
  8. listClass: "mailListDefault", //默认的列表样式
  9. focusClass: "mailListFocus", //列表选样式中
  10. markCalss: "mailListHlignt", //高亮样式
  11.                         zIndex: 1,
  12. autoClass:
  13.                         true, //是否使用插件自带class样式
  14. mailArr:
  15.                         ["qq.com","gmail.com","126.com","163.com","hotmail.com","yahoo.com","yahoo.com.cn","live.com","sohu.com","sina.com"], //邮件数组
  16. textHint:
  17.                         false, //文字提示的自动显示与隐藏
  18. hintText: ""
  19.                         ,
  20. focusColor: "#333"
  21.                         ,
  22. blurColor: "#999"
  23.                 };
  24.                 var settings = $.extend ( {}, defaults, options || {} );
  25.  
  26.                 //页面装载CSS样式
  27.                 if ( settings.autoClass && $ ( "#mailListAppendCss" ).size() === 0 )
  28.                 {
  29.                         $ ( '' ).appendTo ( $ ( "head" ) );
  30.                 }
  31.                 var cb = settings.boxClass, cl = settings.listClass, cf = settings.focusClass, cm = settings.markCalss; //插件的class变量
  32.                 var z = settings.zIndex, newArr = mailArr = settings.mailArr, hint = settings.textHint, text = settings.hintText, fc = settings.focusColor, bc = settings.blurColor;
  33.                 //创建邮件内部列表内容
  34.                 $.createHtml = function ( str, arr, cur )
  35.                 {
  36.                         var mailHtml = "";
  37.                         if ( $.isArray ( arr ) )
  38.                         {
  39.                                 $.each ( arr, function ( i, n )
  40.                                 {
  41.                                         if ( i === cur )
  42.                                         {
  43.                                                 mailHtml += '
  44.                                                             '+str+'@'+arr[i]+'
  45.                                                             ';
  46.                                         }
  47.                                         else
  48.                                         {
  49.                                                 mailHtml += '
  50.                                                             '+str+'@'+arr[i]+'
  51.                                                             ';
  52.                                         }
  53.                                 } );
  54.                         }
  55.                         return mailHtml;
  56.                 };
  57.                 //一些全局变量
  58.                 var index = -1, s;
  59.                 $ ( this ).each ( function()
  60.                 {
  61.                         var that = $ ( this ), i = $ ( ".justForJs" ).size();
  62.                         if ( i > 0 )   //只绑定一个文本框
  63.                         {
  64.                                 return;
  65.                         }
  66.                         var w = that.outerWidth(), h = that.outerHeight(); //获取当前对象(即文本框)的宽高
  67.                         //样式的初始化
  68.                         that.wrap ( '' )
  69.                         .before ( '
  70.                                   ' );
  71.                         var x = $ ( "#mailListBox_" + i ), liveValue; //列表框对象
  72.                         that.focus ( function()
  73.                         {
  74.                                 //父标签的层级
  75.                                 $ ( this ).css ( "color", fc ).parent().css ( "z-index", z );
  76.                                 //提示文字的显示与隐藏
  77.                                 if ( hint && text )
  78.                                 {
  79.                                         var focus_v = $.trim ( $ ( this ).val() );
  80.                                         if ( focus_v === text )
  81.                                         {
  82.                                                 $ ( this ).val ( "" );
  83.                                         }
  84.                                 }
  85.                                 //键盘事件
  86.                                 $ ( this ).keyup ( function ( e )
  87.                                 {
  88.                                         s = v = $.trim ( $ ( this ).val() );
  89.                                         if ( /@/.test ( v ) )
  90.                                         {
  91.                                                 s = v.replace ( /@.*/, "" );
  92.                                         }
  93.                                         if ( v.length > 0 )
  94.                                         {
  95.                                                 //如果按键是上下键
  96.                                                 if ( e.keyCode === 38 )
  97.                                                 {
  98.                                                         //向上
  99.                                                         if ( index <= 0 )
  100.                                                         {
  101.                                                                 index = newArr.length;
  102.                                                         }
  103.                                                         index--;
  104.                                                 }
  105.                                                 else if ( e.keyCode === 40 )
  106.                                                 {
  107.                                                         //向下
  108.                                                         if ( index >= newArr.length - 1 )
  109.                                                         {
  110.                                                                 index = -1;
  111.                                                         }
  112.                                                         index++;
  113.                                                 }
  114.                                                 else if ( e.keyCode === 13 )
  115.                                                 {
  116.                                                         //回车
  117.                                                         if ( index > -1 && index < newArr.length )
  118.                                                         {
  119.                                                                 //如果当前有激活列表
  120.                                                                 $ ( this ).val ( $ ( "#mailList_"+index ).text() );
  121.                                                         }
  122.                                                 }
  123.                                                 else
  124.                                                 {
  125.                                                         if ( /@/.test ( v ) )
  126.                                                         {
  127.                                                                 index = -1;
  128.                                                                 //获得@后面的值
  129.                                                                 //s = v.replace(/@.*/, "");
  130.                                                                 //创建新匹配数组
  131.                                                                 var site = v.replace ( /.*@/, "" );
  132.                                                                 newArr = $.map ( mailArr, function ( n )
  133.                                                                 {
  134.                                                                         var reg = new RegExp ( site );
  135.                                                                         if ( reg.test ( n ) )
  136.                                                                         {
  137.                                                                                 return n;
  138.                                                                         }
  139.                                                                 } );
  140.                                                         }
  141.                                                         else
  142.                                                         {
  143.                                                                 newArr = mailArr;
  144.                                                         }
  145.                                                 }
  146.                                                 x.html ( $.createHtml ( s, newArr, index ) ).css ( "left", 0 );
  147.                                                 if ( e.keyCode === 13 )
  148.                                                 {
  149.                                                         //回车
  150.                                                         if ( index > -1 && index < newArr.length )
  151.                                                         {
  152.                                                                 //如果当前有激活列表
  153.                                                                 x.css ( "left", "-6000px" );
  154.                                                         }
  155.                                                 }
  156.                                         }
  157.                                         else
  158.                                         {
  159.                                                 x.css ( "left", "-6000px" );
  160.                                         }
  161.                                 } ).blur ( function()
  162.                                 {
  163.                                         if ( hint && text )
  164.                                         {
  165.                                                 var blur_v = $.trim ( $ ( this ).val() );
  166.                                                 if ( blur_v === "" )
  167.                                                 {
  168.                                                         $ ( this ).val ( text );
  169.                                                 }
  170.                                         }
  171.                                         $ ( this ).css ( "color", bc ).unbind ( "keyup" ).parent().css ( "z-index",0 );
  172.                                         x.css ( "left", "-6000px" );
  173.  
  174.                                 } );
  175.                                 //鼠标经过列表项事件
  176.                                 //鼠标经过
  177.                                 $ ( ".mailHover" ).live ( "mouseover", function()
  178.                                 {
  179.                                         index = Number ( $ ( this ).attr ( "id" ).split ( "_" ) [1] );
  180.                                         liveValue = $ ( "#mailList_"+index ).text();
  181.                                         x.children ( "." + cf ).removeClass ( cf ).addClass ( cl );
  182.                                         $ ( this ).addClass ( cf ).removeClass ( cl );
  183.                                 } );
  184.                         } );
  185.                         x.bind ( "mousedown", function()
  186.                         {
  187.                                 that.val ( liveValue );
  188.                         } );
  189.                 } );
  190.         };
  191.  
  192. } ) ( jQuery );

回复 "jQuery 输入邮箱地址时自动提示 "

这儿你可以回复上面这条便签

captcha