用Jquery实现可编辑表格并用AJAX提交到服务器修改数据


Posted in Javascript onDecember 27, 2009

下面是js Code:

$(function() { // 相当于在页面中的body标签加上onload事件 
$(".caname").click(function() { // 给页面中有caname类的标签加上click函数 
var objTD = $(this); 
var oldText = $.trim(objTD.text()); // 保存老的类别名称 
var input = $("<input type='text' value='" + oldText + "' />"); // 文本框的HTML代码 
objTD.html(input); // 当前td的内容变为文本框 
// 设置文本框的点击事件失效 
input.click(function() { 
return false; 
}); 
// 设置文本框的样式 
input.css("border-width", "0px"); //边框为0 
input.height(objTD.height()); //文本框的高度为当前td单元格的高度 
input.width(objTD.width()); // 宽度为当前td单元格的宽度 
input.css("font-size", "14px"); // 文本框的内容文字大小为14px 
input.css("text-align", "center"); // 文本居中 
input.trigger("focus").trigger("select"); // 全选 
// 文本框失去焦点时重新变为文本 
input.blur(function() { 
var newText = $(this).val(); // 修改后的名称 
var input_blur = $(this); 
// 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作 
if (oldText != newText) { 
// 获取该类别名所对应的ID(序号) 
var caid = $.trim(objTD.prev().text()); 
// AJAX异步更改数据库 
var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime(); 
$.get(url, function(data) { 
if (data == "false") { 
$("#test").text("类别修改失败,请检查是否类别名称重复!"); 
input_blur.trigger("focus").trigger("select"); // 文本框全选 
} else { 
$("#test").text(""); 
objTD.html(newText); 
} 
}); 
} else { 
// 前后文本一致,把文本框变成标签 
objTD.html(newText); 
} 
}); 
// 在文本框中按下键盘某键 
input.keydown(function(event) { 
var jianzhi = event.keyCode; 
var input_keydown = $(this); 
switch (jianzhi) { 
case 13: // 按下回车键 ,把修改后的值提交到数据库 
// $("#test").text("您按下的键值是: " + jianzhi); 
var newText = input_keydown.val(); // 修改后的名称 
// 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作 
if (oldText != newText) { 
// 获取该类别名所对应的ID(序号) 
var caid = $.trim(objTD.prev().text()); 
// AJAX异步更改数据库 
var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime(); 
$.get(url, function(data) { 
if (data == "false") { 
$("#test").text("类别修改失败,请检查是否类别名称重复!"); 
input_keydown.trigger("focus").trigger("select"); // 文本框全选 
} else { 
$("#test").text(""); 
objTD.html(newText); 
} 
}); 
} else { 
// 前后文本一致,把文本框变成标签 
objTD.html(newText); 
} 
break; 
case 27: // 按下Esc键, 取消修改,把文本框变成标签 
$("#test").text(""); 
objTD.html(oldText); 
break; 
} 
}); 
}); 
}); // 屏蔽Enter按键 
$(document).keydown(function(event) { 
switch (event.keyCode) { 
case 13: return false; 
} 
});

下面是 一般处理程序代码 ChangeCaName.ashx
<%@ WebHandler Language="C#" Class="ChangeCaName" %> 
using System; 
using System.Web; 
using BLL; 
using Model; 
public class ChangeCaName : IHttpHandler 
{ 
public void ProcessRequest(HttpContext context) 
{ 
context.Response.ContentType = "text/plain"; 
string caid = context.Request.QueryString["caid"]; 
string caname = context.Server.UrlDecode(context.Request.QueryString["caname"]); 
// 判断数据库中是否已经存在同名类别 
if (new CategoryManager().IsExists(caname)) 
{ 
context.Response.Write("false"); 
return; 
} 
// 更改数据库类别名 
Category ca = new Category(caid, caname); 
bool b = new CategoryManager().Update(ca); 
if (b) 
{ 
context.Response.Write("true"); 
} 
else 
{ 
context.Response.Write("false"); 
} 
} 
public bool IsReusable 
{ 
get 
{ 
return false; 
} 
} 
}
Javascript 相关文章推荐
不用MOUSEMOVE也能滑动啊
May 23 Javascript
JQuery select标签操作代码段
May 16 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 Javascript
js闭包实例汇总
Nov 09 Javascript
javascript学习笔记之函数定义
Jun 25 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
Vue.js框架路由使用方法实例详解
Aug 25 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
vue添加axios,并且指定baseurl的方法
Sep 19 Javascript
vue路由教程之静态路由
Sep 03 Javascript
jQuery中的常用事件总结
Dec 27 #Javascript
jQuery 动态酷效果实现总结
Dec 27 #Javascript
javascript 清空form表单中某种元素的值
Dec 26 #Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 #Javascript
十分钟打造AutoComplete自动完成效果代码
Dec 26 #Javascript
jQuery 常见开发使用技巧总结
Dec 26 #Javascript
javascript 最常用的10个自定义函数[推荐]
Dec 26 #Javascript
You might like
php实现的用户查询类实例
2015/06/18 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python快速从注释生成文档的方法
2016/12/26 Python
Python 实现链表实例代码
2017/04/07 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Python 使用多属性来进行排序
2019/09/01 Python
flask实现验证码并验证功能
2019/12/05 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
初中生学习的自我评价
2013/11/14 职场文书
买房子个人收入证明
2014/01/16 职场文书
推荐信怎么写
2014/05/09 职场文书
离婚纠纷代理词
2015/05/23 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL