利用javaScript实现点击输入框弹出窗体选择信息


Posted in Javascript onDecember 11, 2013

在这里奉上源代码,没有做样式处理,不过功能是可以的,希望大家可以和我交流交流!

<html>
 <head>
  <title>点击弹出DIV选择信息</title>
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="this is my page">
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 </head> <body>
  <input type="text" onfocus="alertDivINFO(this, 'id', 'name', true, true, 600, 300, 'arrs')" />
  <div style="position: absolute;"></div>
 </body>
</html>

<script type="text/javascript">
 //数组信息
 var arrs = new Array();
 arrs.push({id:"1", name:"张三3"});
 arrs.push({id:"2", name:"李四3"});
 arrs.push({id:"3", name:"申午武3"});
 arrs.push({id:"4", name:"周琬淞3"});
 arrs.push({id:"5", name:"覃晓为3"});
 arrs.push({id:"6", name:"王五"});
 arrs.push({id:"7", name:"宝典3"});
/**
 * obj: 点击文本框的对象
 * idStr: json数组的id键名
 * nameStr: json数组的name键名
 * bool:  true:表示追加 false:表示重新赋值
 * boolSet: true:ID和Name的值都显示 false:只显示Name的值
 * widthNum: 信息DIV的宽度
 * heightNum: 信息DIV的高度
 * arrName: 数组名称
 */
function alertDivINFO(obj, idStr, nameStr, bool, boolSet, widthNum, heightNum, arrName){
 obj.blur();
 if(!widthNum){
  widthNum = 600;
 }
 if(!heightNum){
  heightNum = 350;
 }
 //创建大的DIV
 var alertDivParent = document.createElement("div");
 alertDivParent.id = "alertDivParent";
 with(alertDivParent.style){
  top = 0;
  left = 0;
  position = "absolute";
  background = "#EEEEEE";
  filter  = "alpha(opacity=70)";
  opacity = 0.7;
  width  = Math.max(document.body.clientWidth, document.body.scrollWidth);
  height  = Math.max(document.body.clientHeight, document.body.scrollHeight);
 }
 document.body.appendChild(alertDivParent);
 //创建小的DIV
 var alertDiv = document.createElement("div");
 alertDiv.id = "alertDiv";
 with(alertDiv.style){
  width = widthNum;
  height = heightNum;
  position = "absolute";
  background = "#DDDDDD";
  left  = (Math.max(document.body.clientWidth, document.body.scrollWidth) - widthNum) / 2;
  top  = (Math.max(document.body.clientHeight, document.body.scrollHeight) - heightNum) / 2;
 }
 //添加到窗体
 document.body.appendChild(alertDiv);
 //创建搜索的DIV
 var alertQueryDiv = document.createElement("div");
 alertQueryDiv.id = "alertQueryDiv";
 //将搜索的DIV添加到信息DIV
    alertDiv.appendChild(alertQueryDiv);
    alertQueryDiv.innerHTML = "搜索   名称:";
    //创建文本框
    var alertQueryINPUT = document.createElement("input");
    alertQueryINPUT.id = "alertQueryINPUT";
    alertQueryINPUT.type = "text";
    //将文本框添加到搜索的DIV
    alertQueryDiv.appendChild(alertQueryINPUT);
    //创建搜索按钮
    var alertQueryBUTTON = document.createElement("input");
 alertQueryBUTTON.id = "alertQueryBUTTON";
    alertQueryBUTTON.type = "button";
    alertQueryBUTTON.value = " 搜 索 ";
    //给按钮添加事件
    alertQueryBUTTON.onclick = function(){
  //计算该宽度可放多少单元格
  var tdWidthNum = 130;
  var tdNum = parseInt(widthNum / tdWidthNum);
     var num = 0;
     var j = 0;
     //获取显示信息的Table
  var alertInfoTab = document.getElementById("alertInfoTab");
  //清空THead的信息
  alertInfoTab.deleteTHead();
     //循环数组
  for(var i = 0; i < eval(arrName).length; i ++){
   //如果与数组中的相等就添加到TABLE
      if(eval(arrName + "[i]." + nameStr).indexOf(alertQueryINPUT.value) >= 0){
    var header;
    if(j % tdNum == 0){
     header = alertInfoTab.createTHead();
     header = header.insertRow(num);
     num ++;
    }
    j ++;
    var headerName = header.insertCell(-1);
    with(headerName.style){
     width = tdWidthNum;
     color = "blue";
     cursor = "pointer";
    }
    if(boolSet)
     headerName.appendChild(document.createTextNode(eval(arrName + "[i]." + idStr) + ": " + eval(arrName + "[i]." + nameStr)));
    else if(!boolSet)
     headerName.appendChild(document.createTextNode(eval(arrName + "[i]." + nameStr)));
    headerName.onclick = function(){
     if(bool)
      obj.value = obj.value + this.innerHTML + ";";
     else if(!bool)
      obj.value = this.innerHTML;
     //移除弹出的窗体
     document.body.removeChild(alertDiv);
     document.body.removeChild(alertDivParent);
    };
   }
     }
    };
    //将按钮添加到搜索的DIV
    alertQueryDiv.appendChild(alertQueryBUTTON);
    //创建清空按钮
    var alertClearBUTTON = document.createElement("input");
 alertClearBUTTON.id = "alertClearBUTTON";
    alertClearBUTTON.type = "button";
    alertClearBUTTON.value = " 清 空 ";
    alertClearBUTTON.onclick = function(){
     //给文本框赋空值
     obj.value = "";
  //移除弹出的窗体
  document.body.removeChild(alertDiv);
  document.body.removeChild(alertDivParent);
    };
    //将按钮添加到搜索的DIV
    alertQueryDiv.appendChild(alertClearBUTTON);
    //创建关闭按钮
    var alertCancelBUTTON = document.createElement("input");
 alertCancelBUTTON.id = "alertCancelBUTTON";
    alertCancelBUTTON.type = "button";
    alertCancelBUTTON.value = " 关 闭 ";
    alertCancelBUTTON.onclick = function(){
  //移除弹出的窗体
  document.body.removeChild(alertDiv);
  document.body.removeChild(alertDivParent);
    };
    //将按钮添加到搜索的DIV
    alertQueryDiv.appendChild(alertCancelBUTTON);
 //创建显示信息的Table
 var alertInfoTab = document.createElement("table");
 alertInfoTab.id = "alertInfoTab";
 with(alertInfoTab.style){
  margin = 20;
 }
 //计算该宽度可放多少单元格
 var tdWidthNum = 130;
 var tdNum = parseInt(widthNum / tdWidthNum);
    var num = 0;
 for(var i = 0; i < eval(arrName).length; i ++){
  var header;
  if(i % tdNum == 0){
   header = alertInfoTab.createTHead();
   header = header.insertRow(num);
   num ++;
  }
  var headerName = header.insertCell(-1);
  with(headerName.style){
   width = tdWidthNum;
   color = "blue";
   cursor = "pointer";
  }
  //var headerType = header.insertCell(-1);
  if(boolSet)
   headerName.appendChild(document.createTextNode(eval(arrName + "[i]." + idStr) + ": " + eval(arrName + "[i]." + nameStr)));
  else if(!boolSet)
   headerName.appendChild(document.createTextNode(eval(arrName + "[i]." + nameStr)));
  //headerType.appendChild(document.createTextNode("Type"));
  headerName.onclick = function(){
   if(bool)
    obj.value = obj.value + this.innerHTML + ";";
   else if(!bool)
    obj.value = this.innerHTML;
   //移除弹出的窗体
   document.body.removeChild(alertDiv);
   document.body.removeChild(alertDivParent);
  };
 }
 //将table添加到显示信息的DIV
    alertDiv.appendChild(alertInfoTab);
}
</script>
Javascript 相关文章推荐
javascript 页面划词搜索JS
Sep 28 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
javascript获取select值的方法分析
Jul 02 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
js弹出窗口简单实现代码
Mar 22 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
Angular6笔记之封装http的示例代码
Jul 27 Javascript
微信小程序实现时间进度条功能
Nov 17 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
在HTML5 localStorage中存储对象的示例代码
Apr 21 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 #Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 #Javascript
js为空或不是对象问题的快速解决方法
Dec 11 #Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 #Javascript
javascript弹出层输入框(示例代码)
Dec 11 #Javascript
深入理解javascript中defer的作用
Dec 11 #Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 #Javascript
You might like
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现视频下载功能
2017/03/14 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
python中的测试框架
2020/11/13 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
台湾良兴购物网:EcLife
2019/12/01 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
材料物理专业求职信
2014/09/01 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
2019消防宣传标语!
2019/07/10 职场文书
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电