用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 相关文章推荐
JS类库Bindows1.3中的内存释放方式分析
Mar 08 Javascript
js 省地市级联选择
Feb 07 Javascript
用jquery实现下拉菜单效果的代码
Jul 25 Javascript
js弹出层永远居中实现思路及代码
Nov 29 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
Javascript中的arguments对象
Jun 20 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
浅析vue给不同环境配置不同打包命令
Aug 17 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
vue+webpack 更换主题N种方案优劣分析
Oct 28 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 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中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
php事务处理实例详解
2014/07/11 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
简单的python后台管理程序
2017/04/13 Python
python WindowsError的错误代码详解
2017/07/23 Python
python缩进长度是否统一
2020/08/02 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
军训自我鉴定
2014/01/22 职场文书
小学美术教学反思
2014/02/01 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
主题团日活动总结
2014/06/25 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书