极品源码:自动完成 仿163篇

New Document

.autofinish{font-family:arial;font-size:12px;background:#eeeeee;border:1px solid #000000;padding:2px;color:#0000cc;}
.autofinish_over{background:#C4E4FF;font-size:12px;margin:5px;color:#0000cc}
.autofinish td{font-size:12px;}

双击获取值

var g_ArrEmailList;
var g_MainDiv=null;
var g_Body=null;
var g_FirstTd=null;
var g_CurrentTd=null;
var g_InputObject=null;
var g_OldInnerTxt="";
var g_NewInnerTxt="";
var g_TdCssClassName="autofinish_over";
var g_TbCssClassName="autofinish";
var g_AddListContainer=null;
var g_IgnoreIE=false;
g_IgnoreIE=(navigator.userAgent.indexOf('MSIE 5')!=-1||navigator.userAgent.indexOf('Mac')!=-1);
function f_OnKeyDown(obj,event){
if(obj!=g_InputObject){
if(g_MainDiv!=null){g_MainDiv.innerHTML="";g_MainDiv=null;};
g_OldInnerTxt="";g_NewInnerTxt="";g_FirstTd=null;g_CurrentTd=null;g_InputObject=obj;};
f_InitMain();
var kc=event.keyCode;
switch(kc){
case 13:f_EnterKey();f_SetDivDisplay(false);return false;break;
case 27:f_EscapeKey();f_SetDivDisplay(false);return false;break;
case 8:f_BackSpaceKey(obj,event);return;break;
case 38:f_UpKey();return;break;
case 40:f_DownKey();return;break;default:break;};return true;};
function f_OnKeyUp(obj,event){
var kc=event.keyCode;
var sTemp="13,27,38,40,9,116,";
kc=kc+"";
if(sTemp.indexOf(kc)>-1){return false;};
f_InitDivData(obj,event);
if(g_NewInnerTxt==""&&kc!=32){f_SetDivDisplay(false);}else{f_SetDivDisplay(true);};};

function f_OnKeyPress(){return;};
function f_OnChange(){return;};
function f_OnBlur(){if(g_InputObject==null){return;};
var s=g_InputObject.value;
var x=s.substr(s.length-1,1);
if(x==","||x==";"){g_InputObject.value=s.substr(0,s.length-1);};return;};
function f_OnPasete(){return;};
function f_InitMain(){
if(g_Body==null){g_Body=document.body;};
if(g_MainDiv==null){g_MainDiv=f_CreateDiv();g_Body.appendChild(g_MainDiv);};};

function f_CreateDiv(){
var div=document.createElement("div");
div.id="divEmailAddressMain";
div.style.position="absolute";
div.style.display="";return div;};

function f_SetDivDisplay(bTrue){
if(bTrue){g_AddListContainer.style.display="";}else{g_AddListContainer.style.display="none";};};

function f_GetX(e){var l=e.offsetLeft;while(e=e.offsetParent){l+=e.offsetLeft;};return l;};function f_GetY(e){var t=e.offsetTop;while(e=e.offsetParent){t+=e.offsetTop;};return t;};function f_CreateTable(){var oTable=document.createElement("table");oTable.border=0;oTable.cellSpacing=2;oTable.cellPadding=2;oTable.className=g_TbCssClassName;return oTable;};function f_CreateRow(table){var rowNode=table.insertRow(-1);return rowNode;};function f_CreateColumn(row,i){var colNode=row.insertCell(document.all?-1:0);colNode.id="tdACMA_"+i;colNode.zIndex=i;colNode.align="left";colNode.style.cursor=document.all?"hand":"pointer";colNode.onmouseover=f_TdOnmouseover;colNode.onclick=f_TdOnclick;if(i==0){colNode.className=g_TdCssClassName;g_FirstTd=colNode;g_CurrentTd=colNode;}else{colNode.className="";};return colNode;};function f_TdOnmouseover(e){var o;if(!e){var e=window.event;};if(e.target){o=e.target;};if(e.srcElement){o=e.srcElement;};while(o.tagName!="TD"){o=o.parentNode;};o.className="";if(g_CurrentTd!=null){g_CurrentTd.className="";};g_CurrentTd=o;g_CurrentTd.className=g_TdCssClassName;};function f_TdOnclick(){f_FillCurrentEmail();};
function f_FillCurrentEmail(){
if(g_CurrentTd==null||g_InputObject==null){return;};
if(g_ArrEmailList==null||g_ArrEmailList.length==0){return;};
var i=parseInt(g_CurrentTd.zIndex);
var s=g_OldInnerTxt;
if(g_OldInnerTxt!=""){s+=",";};
g_InputObject.focus();
g_InputObject.value=s+"\""+g_ArrEmailList[i][0]+"\" "+",";f_SetDivDisplay(false);g_CurrentTd=null;};

function f_InitDivData(objInput,event){
var oTb,oTr,oTd;
g_ArrEmailList=f_GetArrEmailList(event);
if(g_ArrEmailList!=null){
g_MainDiv.innerHTML="";
oTb=f_CreateTable();
g_MainDiv.appendChild(oTb);
for(var i=0;i"+g_NewInnerTxt+""+g_ArrEmailList[i][0].substring(g_NewInnerTxt.length,g_ArrEmailList[i][0].length);};
if(g_ArrEmailList[i][1].substring(0,g_NewInnerTxt.length)==g_NewInnerTxt){
sStrongTextAddr=""+g_NewInnerTxt+""+g_ArrEmailList[i][1].substring(g_NewInnerTxt.length,g_ArrEmailList[i][1].length);};
oTd.innerHTML="""+sStrongTextName+"" ";};
var e=objInput;
if(!document.getElementById("dvAddListContainer")){
var tDiv=document.createElement("div");
tDiv.id="dvAddListContainer";
with(tDiv.style){position="absolute";zIndex="99";display="none";width=height="0px";};
if(document.all&&!g_IgnoreIE){tDiv.innerHTML='';};
document.body.appendChild(tDiv);};
g_AddListContainer=document.getElementById("dvAddListContainer");
g_AddListContainer.style.left=(f_GetX(e)+1)+"px";
g_AddListContainer.style.top=(f_GetY(e)+24)+"px";
g_AddListContainer.style.display="";
g_AddListContainer.appendChild(g_MainDiv);
g_MainDiv.style.left=0;g_MainDiv.style.top=0;
if(document.all&&!g_IgnoreIE){
var ifr=document.getElementById("ifAddList");
ifr.style.width=(oTb.offsetWidth+1)+"px";
ifr.style.height=(oTb.offsetHeight+1)+"px";};};};
function f_GetArrEmailList(event){
if(g_InputObject==null){return null;};
var s=g_InputObject.value;
var k=s.length;
var iLastSign=0;
if(s.lastIndexOf(",")>s.lastIndexOf(";")){
iLastSign=s.lastIndexOf(",");}else{iLastSign=s.lastIndexOf(";");};
g_NewInnerTxt=s.substring(iLastSign+1,k);
if(event.keyCode==8){
g_NewInnerTxt=s.substring(iLastSign+1,k-1);};
g_NewInnerTxt=f_Trim(g_NewInnerTxt);
g_OldInnerTxt=s.substring(0,iLastSign);
g_OldInnerTxt=f_Trim(g_OldInnerTxt);
var arr=new Array();
var re;
var j=0;
if(g_NewInnerTxt==""){
if(event.keyCode==32)arr=gArrEmailAddress;}
else{
try{re=new RegExp("^"+g_NewInnerTxt,"i");
for(var i=0;i

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 极品源码:自动完成 仿163篇

    New Document .autofinish{font-family:arial;font-size:12px;background:#eeeeee;border:1px solid #000000;padding:2px;color:#0000cc;} .autofinish_over{background:#C4E4FF;font-size:12px;margin:5px;color:#0000cc} .autofinish td{font-size:12px;} 双击获取值 var g

  • elementui源码学习之仿写一个el-divider组件

    目录 正文 组件需求分析 组件中用到的知识点 函数式组件 函数式组件的两种定义方式 解决一像素太粗的问题 组件封装 组件封装的效果图 组件封装的代码 正文 本篇文章记录仿写一个el-divider组件细节,从而有助于大家更好理解饿了么ui对应组件具体工作细节.本文是elementui源码学习仿写系列的又一篇文章,后续空闲了会不断更新并仿写其他组件.源码在github上,大家可以拉下来,npm start运行跑起来,结合注释有助于更好的理解. github仓库地址如下:github.com/shu

  • JDK源码白话解读之ThreadLocal篇

    目录 引言 ThreadLocal是什么?它能干什么? ThreadLocal实现线程隔离的秘密 为什么ThreadLocal会出现OOM的问题? 内存泄漏演示 内存泄漏问题分析 父子线程的参数传递 总结 引言 因此本文主要结合常见的一些疑问.ThreadLocal源码.应用实例以注意事项来全面而深入地再详细讲解一遍ThreadLocal.希望大家看完本文后可以彻底掌握ThreadLocal. ThreadLocal是什么?它能干什么? 在阐述ThreadLocal之前,我们先来看下它的设计者是

  • js调试系列 源码定位与调试[基础篇]

    我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码 其实非常简单,点放大镜选中那个推荐即可. 这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置. 其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看. 我在控制台输入 votePost 然后回车, 函数源码粗显啦,并且在右下角有个链接 blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7A

  • 基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)

    废话不多说了,先给大家展示下效果图,感兴趣的朋友继续往下看 哦 查看演示       源码下载 HTML 和上一篇文章:使用jQuery和CSS3制作数字时钟(CSS3篇)一样的HTML结构,只是多了个>date用来展示日期和星期的. <div id="clock" class="light"> <div class="display"> <div class="date"></

  • Android AsyncTask源码分析

    Android中只能在主线程中进行UI操作,如果是其它子线程,需要借助异步消息处理机制Handler.除此之外,还有个非常方便的AsyncTask类,这个类内部封装了Handler和线程池.本文先简要介绍AsyncTask的用法,然后分析具体实现. 基本用法 AsyncTask是一个抽象类,我们需要创建子类去继承它,并且重写一些方法.AsyncTask接受三个泛型参数: Params: 指定传给任务执行时的参数的类型 Progress: 指定后台任务执行时将任务进度返回给UI线程的参数类型 Re

  • 快速搭建Spring Boot+MyBatis的项目IDEA(附源码下载)

    如何快速构建一个Spring Boot的项目工具 ideaJDK版本 1.8Spring Boot 版本 1.5.9环境搭建实现:最基础前端可以访问到数据库内的内容 开始 1.IDEA 内部新建一个项目,项目类型选择Spring Initializr,Project SDK选择适合你当前环境的版本,这里我选择的是1.8(Spring Boot 2.0以上的版本,JDK选择请选择1.8即以上版本),构建服务选择默认就好,点击Next 2.填写Group和Artifact(此处我使用的是默认,请根据

  • Spring源码分析容器启动流程

    目录 前言 源码解析 1.初始化流程 流程分析 核心代码剖析 2.刷新流程 流程分析 核心代码剖析 前言 本文基于 Spring 的 5.1.6.RELEASE 版本 Spring的启动流程可以归纳为三个步骤: 1.初始化Spring容器,注册内置的BeanPostProcessor的BeanDefinition到容器中 2.将配置类的BeanDefinition注册到容器中 3.调用refresh()方法刷新容器 Spring Framework 是 Java 语言中影响最为深远的框架之一,其

  • Three.js源码阅读笔记(Object3D类)

    这是Three.js源码阅读笔记的第二篇,直接开始. Core::Object3D Object3D似乎是Three.js框架中最重要的类,相当一部分其他的类都是继承自Object3D类,比如场景类.几何形体类.相机类.光照类等等:他们都是3D空间中的对象,所以称为Object3D类.Object3D构造函数如下: 复制代码 代码如下: THREE.Object3D = function () { THREE.Object3DLibrary.push( this ); this.id = THR

  • Three.js源码阅读笔记(物体是如何组织的)

    这是Three.js源码阅读笔记第三篇.之前两篇主要是关于核心对象的,这些核心对象主要围绕着矢量vector3对象和矩阵matrix4对象展开的,关注的是空间中的单个顶点的位置和变化.这一篇将主要讨论Three.js中的物体是如何组织的:即如何将顶点.表面.材质组合成为一个具体的对象. Object::Mesh 该构造函数构造了一个空间中的物体.之所以叫"网格"是因为,实际上具有体积的物体基本都是建模成为"网格"的. 复制代码 代码如下: THREE.Mesh =

随机推荐