- /**
- * CL_TableEdit 编辑插件(适用于表格内修改单元格文本)
- * Author: ..
- * Email: lu_chuliang@sina.com
- * Version: 0.0.1
- * Date: Fri Jan 11 2013 11:47:42 GMT+0800 (中国标准时间)
- *
- * 原型:
- * CL_TableEdit(obj[,callback[,arg]])
- * @obj 需要更改内容的dom元素
- * @callback 可选,内容更改前调用的函数(函数返回值将为更改后的内容),如果此参数被缺省,则直接将输入的内容修改至dom元素
- * @arg 可选,在调用callback时需要传递的参数(callback函数将能接收到此参数)
- **/
- function CL_TableEdit(obj,callback,arg){
- var tag = obj.firstChild.tagName;
- if (typeof(tag) != "undefined" && tag.toLowerCase() == "input")
- return;
- /* 保存原始的内容 */
- var org = obj.innerHTML;
- var val = obj.innerText ? obj.innerText : obj.textContent;
- /* 创建一个输入框 */
- var txt = document.createElement("INPUT");
- txt.value = (val == 'N/A') ? '' : val;
- //txt.style.width = (obj.offsetWidth) + "px" ;
- /* 隐藏对象中的内容,并将输入框加入到对象中 */
- obj.innerHTML = "";
- obj.appendChild(txt);
- txt.focus();
- /* 编辑区输入事件处理函数 */
- txt.onkeypress = function(e){
- var evt = e || window.event;
- switch(e.keyCode | e.which | e.charCode){
- case 13:
- txt.blur();
- break;
- case 27:
- obj.innerHTML = org;
- break;
- }
- }
- /* 编辑区失去焦点的处理函数 */
- txt.onblur = function(e){
- var val = txt.value;
- if (val.length > 0 && val!=org){
- if(typeof(callback)=="undefined"){
- obj.innerHTML = val;
- }
- else if(typeof(callback)=="function"){
- var r = callback(val,arg);
- if(typeof(r)=="string")
- obj.innerHTML = r;
- else
- obj.innerHTML = org;
- }
- else
- obj.innerHTML = org;
- }
- else
- obj.innerHTML = org;
- }
- }
例子:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>CL_TableEdit示例</title>
- <script type="text/javascript" src="CL_TableEdit-0.0.1.js"></script>
- <style type="text/css">
- <!--
- input {
- width:100%;
- height:100%;
- margin: 0px;
- padding: 0px;
- border-top-style: none;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #DDFFEE;
- color: #FF0000;
- font-size: 14px;
- }
- td {
- word-break:break-all;
- }
- body {
- font-size: 16px;
- }
- #idid {
- border: 1px solid #99CCFF;
- height: 22px;
- }
- -->
- </style>
- </head>
- 回车键确定修改,Esc键取消修改
- <body><table border="1" cellspacing="0" cellpadding="0" width="100%" style="table-layout:fixed;">
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- <td onclick="CL_TableEdit(this)">123456</td>
- </tr>
- </table>
- <br />
- <br />
- <br />
- <br />
- <br />
- 执行函数
- <script>
- function onEdit(str,arg){
- $.ajax({
- async:false,type:"POST",url:"ad_xiaohao_his.PHP",data:{id:arg,dopost:'update',date_xiaohao:str},success:function(data){
- if(data=='ok'){
- se=1;
- }else {
- alert(data);
- }
- },error:function(data){
- alert('网络连接失败');
- }
- });
- document.getElementById("show").innerHTML = "输入的内容:"+str+"<br />传递的参数:"+arg+"<br />函数返回:"+str;
- alert(arg);
- return str;//返回的内容才是表格里的单元格的最后显示内容,如果用ajax提交数据的话,请使用非异步模式ajax
- }
- </script>
- <div id="show"></div>
- <table border="1" cellspacing="0" cellpadding="0" width="100%" style="table-layout:fixed;">
- <tr>
- <td onclick="CL_TableEdit(this,onEdit,'1-1')">123456</td>
- <td onclick="CL_TableEdit(this,'1-2')">123456</td>
- <td onclick="CL_TableEdit(this,'1-3')">123456</td>
- <td onclick="CL_TableEdit(this,\"<?PHP echo "id='sdsdsdsd'&val='dsds ds'" ?>\")">123456</td>
- <td onclick="CL_TableEdit(this,'1-5')">123456</td>
- <td onclick="CL_TableEdit(this,'1-6')">123456</td>
- <td onclick="CL_TableEdit(this,'1-7')">123456</td>
- <td onclick="CL_TableEdit(this,'1-8')">123456</td>
- <td onclick="CL_TableEdit(this,'1-9')">123456</td>
- <td onclick="CL_TableEdit(this,'1-0')">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this,'2-1')">123456</td>
- <td onclick="CL_TableEdit(this,'2-2')">123456</td>
- <td onclick="CL_TableEdit(this,'2-3')">123456</td>
- <td onclick="CL_TableEdit(this,'na=')">123456</td>
- <td onclick="CL_TableEdit(this,'2-5')">123456</td>
- <td onclick="CL_TableEdit(this,'2-6')">123456</td>
- <td onclick="CL_TableEdit(this,'2-7')">123456</td>
- <td onclick="CL_TableEdit(this,'2-8')">123456</td>
- <td onclick="CL_TableEdit(this,'2-9')">123456</td>
- <td onclick="CL_TableEdit(this,'2-0')">123456</td>
- </tr>
- <tr>
- <td onclick="CL_TableEdit(this,'3-1')">123456</td>
- <td onclick="CL_TableEdit(this,'3-2')">123456</td>
- <td onclick="CL_TableEdit(this,'3-3')">123456</td>
- <td onclick="CL_TableEdit(this,'3-4')">123456</td>
- <td onclick="CL_TableEdit(this,'3-5')">123456</td>
- <td onclick="CL_TableEdit(this,'3-6')">123456</td>
- <td onclick="CL_TableEdit(this,'3-7')">123456</td>
- <td onclick="CL_TableEdit(this,'3-8')">123456</td>
- <td onclick="CL_TableEdit(this,'3-9')">123456</td>
- <td onclick="CL_TableEdit(this,'3-0')">123456</td>
- </tr>
- </table>
- <br />
- <br />
- <br />
- 其实,并不一定要在表格里才能用,下面这个是一个div:
- <div id="idid" onclick="CL_TableEdit(this)">13213213</div>
- </body>
- </html>