智能表格_javascript技巧
作者 llinzzi
版本 0.9
说明:
当焦点不在表格内的input时,回车键复制最后一行,delete删除键最后一行
选择checkbox,可以进行复制,删除
双击表格会出现菜单,自动收集该列已存在数据,选中自动填充 这里是亮点
数据发送采用ajax(自定义的一个ajax类,blog已发布过)一行一行的发送
兼容IE6和Firefox1.5 符合W3C
本表格一切功能都是为了减少输入录入工作,适合大项目开放使用
nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script> <BR><!-- <BR>//////////////////////////////////////////页面初始化/////////////////////////////////////// <BR>beginListen(); <BR>//////////////////////////////////////////页面初始化/////////////////////////////////////// <BR>//////////////////////////////////////////ajax类/////////////////////////////////////// <BR>function Ajax(url,recvT,stringS,resultF) { <BR> this.url = url; <BR> this.stringS = stringS; <BR> this.xmlHttp = this.createXMLHttpRequest(); <BR> if (this.xmlHttp == null) { <BR> alert("erro"); <BR> return; <BR> } <BR> var objxml = this.xmlHttp; <BR> objxml.onreadystatechange = function (){Ajax.handleStateChange(objxml,recvT,resultF)}; <BR>} <br><br>Ajax.prototype.createXMLHttpRequest = function() { <BR> try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} <BR> try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} <BR> try { return new XMLHttpRequest(); } catch(e) {} <BR> return null; <BR>} <br><br>Ajax.prototype.createQueryString = function () { <BR> var queryString = this.stringS; <BR> return queryString; <BR>} <br><br>Ajax.prototype.get = function () { <BR> url = this.url; <BR> var queryString = url+"?timeStamp=" + new Date().getTime() + "&" + this.createQueryString(); <BR> this.xmlHttp.open("GET",queryString,true); <BR> this.xmlHttp.send(null); <BR>} <br><br>Ajax.prototype.post = function() { <BR> url = this.url; <BR> var url = url + "?timeStamp=" + new Date().getTime(); <BR> var queryString = this.createQueryString(); <BR> this.xmlHttp.open("POST",url,true); <BR> this.xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); <BR> this.xmlHttp.send(queryString); <BR>} <br><br>Ajax.handleStateChange = function (xmlHttp,recvT,resultF) { <BR> if (xmlHttp.readyState == 4) { <BR> if (xmlHttp.status == 200) { <BR> resultF(recvT?xmlHttp.responseXML:xmlHttp.responseText); <BR> } else { <BR> alert("您所请求的页面有异常。"); <BR> } <BR> } <BR>} <BR>//////////////////////////////////////////ajax类/////////////////////////////////////// <br><br>//////////////////////////////////////////处理鼠标事件/////////////////////////////////////// <BR>//表格变色 <BR>var toBeColor = "#F8F9FC"; <BR>var backColor = "#FFFFFF"; <BR>function onChangTrColor(obj) { <BR> obj.parentNode.style.backgroundColor = toBeColor; <BR> obj.style.backgroundColor = toBeColor; <BR> var inputs = obj.parentNode.parentNode.getElementsByTagName("input"); <BR> for (var i = 0; i < inputs.length; i++ ){ <BR> inputs[i].style.backgroundColor = toBeColor; <BR> inputs[i].parentNode.style.backgroundColor = toBeColor; <BR> } <BR>} <br><br>function outChangTrColor(obj) { <BR> obj.parentNode.style.backgroundColor = backColor; <BR> obj.style.backgroundColor = backColor; <BR> var inputs = obj.parentNode.parentNode.getElementsByTagName("input"); <BR> for (var i = 0; i < inputs.length; i++ ){ <BR> inputs[i].style.backgroundColor = backColor; <BR> inputs[i].parentNode.style.backgroundColor = backColor; <BR> } <BR>} <br><br>//////////////////////////////////////////处理鼠标事件/////////////////////////////////////// <br><br>//////////////////////////////////////////处理页面操作/////////////////////////////////////// <BR>//复制所选 <BR>function copySelect(){ <BR> var checkboxs = document.getElementsByName("checkbox"); <BR> for (var i=0; i<checkboxs.length; i++) { <BR> if(checkboxs[i].checked == true){ <BR> checkboxs[i].checked = false; <BR> copyTr(checkboxs[i]); <BR> checkboxs[i].checked = true; <BR> } <BR> } <BR>} <br><br>function copyTr(obj) { <BR> var tbody = document.getElementById("tbData").getElementsByTagName("tbody")[0]; <BR> var Str = obj.parentNode.parentNode; <BR> var tr = Str.cloneNode(true); <BR> tbody.appendChild(tr); <BR>} <br><br>//删除所选 <BR>function delSelect(){ <BR> var checkboxs = document.getElementsByName("checkbox"); <BR> var table = document.getElementById("tbData"); <BR> var tr = table.getElementsByTagName("tr"); <BR> for (var i=0; i<checkboxs.length; i++) { <BR> if(tr.length==2){ <BR> checkboxs[i].checked = false; <BR> return; <BR> } <BR> if(checkboxs[i].checked==true){ <BR> removeTr(checkboxs[i]); <BR> i=-1; <BR> } <BR> } <BR>} <br><br>function removeTr(obj) { <BR> var sTr = obj.parentNode.parentNode; <BR> sTr.parentNode.removeChild(sTr); <BR>} <br><br>//全选按钮 <BR>function selectAll() { <BR> var checkboxs = document.getElementsByName("checkbox"); <BR> var mark = true; <BR> for (var i=0; i<checkboxs.length; i++) { <BR> if (checkboxs[i].checked==false){mark = false} <BR> } <BR> if (mark){ <BR> for (var i=0; i<checkboxs.length; i++) { <BR> checkboxs[i].checked = false; <BR> } <BR> }else{ <BR> for (var i=0; i<checkboxs.length; i++) { <BR> checkboxs[i].checked = true; <BR> } <BR> } <BR>} <br><br>//////////////////////////////////////////处理页面操作/////////////////////////////////////// <br><br>//////////////////////////////////////////处理键盘操作/////////////////////////////////////// <BR>//键盘事件 <BR>function beginListen(){ <BR> if(document.addEventListener){ <BR> document.addEventListener("keydown",keyDown,true); <BR> }else{ <BR> document.attachEvent("onkeydown",keyDown); <BR> } <BR>} <BR>function stopListen(){ <BR> document.detachEvent("onkeydown",keyDown); <BR>} <br><br>//处理键盘事件 <BR>function keyDown(event){ <BR> if(event.keyCode==13){addTr()} <BR> if(event.keyCode==46){delTr()} <BR>} <br><br>//增加表格 <BR>function addTr() { <BR> var tbody = document.getElementById("tbData").getElementsByTagName("tbody")[0]; <BR> var sTr = tbody.getElementsByTagName("tr")[0]; <BR> var tr = sTr.cloneNode(true); <BR> tbody.appendChild(tr); <BR>} <br><br>//增加表格 <BR>function addTr() { <BR> var tbody = document.getElementById("tbData").getElementsByTagName("tbody")[0]; <BR> var trs = tbody.getElementsByTagName("tr"); <BR> var sTr = trs[trs.length-1]; <BR> var tr = sTr.cloneNode(true); <BR> tbody.appendChild(tr); <BR>} <br><br>//删除表格 <BR>function delTr() { <BR> var table = document.getElementById("tbData"); <BR> var tr = table.getElementsByTagName("tr"); <BR> if(tr.length==2){return;} <BR> var lastTr = tr[tr.length-1]; <BR> lastTr.parentNode.removeChild(lastTr); <BR>} <br><br><BR>//////////////////////////////////////////处理键盘操作/////////////////////////////////////// <br><br>//////////////////////////////////////////处理按钮事件/////////////////////////////////////// <BR>//自动填充 <BR>var currentObj; <BR>function showDiv(event,obj) { <BR> var eX = event.clientX; <BR> var eY = event.clientY; <BR> var sY = document.body.parentNode.scrollTop; <BR> var dY = eY + sY; <BR> var divShowInput = document.getElementById("divShowInput"); <BR> divShowInput.style.top = dY + "px"; <BR> divShowInput.style.left = eX+"px"; <BR> divShowInput.style.display = "block"; <BR> currentObj = obj; <BR> ////智能菜单//// <BR> fixMenu(); <BR> //判断焦点位置 <BR> var tds = obj.parentNode.parentNode.getElementsByTagName("td"); <BR> var tdOrder; <BR> for (var i = 0; i < tds.length; i++ ){ <BR> if(tds[i] === obj.parentNode){ <BR> tdOrder = i; <BR> } <BR> } <BR> //填充标题标题 <BR> var tdTitleTr = document.getElementById("tbData").getElementsByTagName("tr")[0]; <BR> var tdTitle = tdTitleTr.getElementsByTagName("td")[tdOrder]; <BR> document.getElementById("barTitle").innerHTML = tdTitle.innerHTML; <BR> //收集表格信息//判断重复 <BR> var trs = obj.parentNode.parentNode.parentNode.getElementsByTagName("tr"); <BR> var autoFillP = document.getElementById("autoFillP"); <BR> var bankM = true; <BR> for (var i = 0; i < trs.length; i++ ){ <BR> var inputValue = trs[i].getElementsByTagName("td")[tdOrder].getElementsByTagName("input")[0].value; <BR> if (inputValue != "") { <BR> bankM = false; <BR> var menus = autoFillP.getElementsByTagName("a"); <BR> if(menus.length > 0) { <BR> var beliveM = true; <BR> for (var j = 0; j < menus.length; j++ ){ <BR> if(menus[j].firstChild.nodeValue == inputValue) { <BR> beliveM = false; <BR> } <BR> } <BR> if(beliveM){ <BR> var Svalue = document.createElement("a"); <BR> Svalue.setAttribute("href","javascript:void 0"); <BR> Svalue.onclick = function () {fillInput(this)}; <BR> var Stext = document.createTextNode(inputValue); <BR> Svalue.appendChild(Stext); <BR> autoFillP.appendChild(Svalue); <BR> } <BR> }else{ <BR> var Svalue = document.createElement("a"); <BR> Svalue.setAttribute("href","javascript:void 0"); <BR> Svalue.onclick = function () {fillInput(this)}; <BR> var Stext = document.createTextNode(inputValue); <BR> Svalue.appendChild(Stext); <BR> autoFillP.appendChild(Svalue); <BR> } <BR> } <BR> } <BR> if(bankM) { <BR> var Svalue = document.createElement("a"); <BR> Svalue.setAttribute("href","javascript:void 0"); <BR> var Stext = document.createTextNode("数据空"); <BR> Svalue.appendChild(Stext); <BR> autoFillP.appendChild(Svalue); <BR> } <BR>} <br><br>function fillInput(obj) { <BR> currentObj.value = obj.innerHTML; <BR> var divShowInput = document.getElementById("divShowInput"); <BR> divShowInput.style.display = "none"; <BR>} <br><br>function clearInput() { <BR> currentObj.value = ""; <BR> var divShowInput = document.getElementById("divShowInput"); <BR> divShowInput.style.display = "none"; <BR>} <br><br>function hideDiv(obj) { <BR> obj.parentNode.style.display = "none"; <BR>} <br><br>//删除智能菜单已有数据 <BR>function fixMenu() { <BR> var autoFillP = document.getElementById("autoFillP"); <BR> var values = autoFillP.getElementsByTagName("a"); <BR> for (var i = values.length-1; i >= 0; i-- ){ <BR> autoFillP.removeChild(values[i]); <BR> } <BR>} <BR>//////////////////////////////////////////处理按钮事件/////////////////////////////////////// <br><br>//////////////////////////////////////////数据发送/////////////////////////////////////// <br><br>//////////////////////////////////////////数据发送/////////////////////////////////////// <BR>function sendData() { <BR> var sendName = new Array("ok","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11"); <BR> var trs = document.getElementById("tbData").getElementsByTagName("tbody")[0].getElementsByTagName("tr"); <BR> for (var i = 0; i < trs.length; i++) { <BR> var sendValue = new Array(); <BR> var values = trs[i].getElementsByTagName("input"); <BR> var postString = sendName[1] + "=" + values[1].value;; <BR> for (var j = 2; j < values.length; j++) { <BR> postString = postString + "&" + sendName[j] + "=" + values[j].value; <BR> } <BR> var SendAjax = new Ajax("isave.asp",0,postString,sendok); <BR> SendAjax.post(); <BR> function sendok(revData){ <BR> alert(revData); <BR> } <BR> } <BR>} <br><br><br><br>//////////////////////////////////////////数据发送/////////////////////////////////////// <br><br><BR>//--> <BR></script>
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
|
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

简单JavaScript函数用于检查日期是否有效。 function isValidDate(s) { var bits = s.split('/'); var d = new Date(bits[2] '/' bits[1] '/' bits[0]); return !!(d && (d.getMonth() 1) == bits[1] && d.getDate() == Number(bits[0])); } //测试 var

本文探讨如何使用 jQuery 获取和设置 DOM 元素的内边距和外边距值,特别是元素外边距和内边距的具体位置。虽然可以使用 CSS 设置元素的内边距和外边距,但获取准确的值可能会比较棘手。 // 设置 $("div.header").css("margin","10px"); $("div.header").css("padding","10px"); 你可能会认为这段代码很

本文探讨了十个特殊的jQuery选项卡和手风琴。 选项卡和手风琴之间的关键区别在于其内容面板的显示和隐藏方式。让我们深入研究这十个示例。 相关文章:10个jQuery选项卡插件

发现十个杰出的jQuery插件,以提升您的网站的活力和视觉吸引力!这个精选的收藏品提供了不同的功能,从图像动画到交互式画廊。让我们探索这些强大的工具: 相关文章: 1

HTTP-Console是一个节点模块,可为您提供用于执行HTTP命令的命令行接口。不管您是否针对Web服务器,Web Serv

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

当div内容超出容器元素区域时,以下jQuery代码片段可用于添加滚动条。 (无演示,请直接复制到Firebug中) //D = document //W = window //$ = jQuery var contentArea = $(this), wintop = contentArea.scrollTop(), docheight = $(D).height(), winheight = $(W).height(), divheight = $('#c
