用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 相关文章推荐
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
jquery radio 操作代码
Mar 16 Javascript
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
jquery实现可自动判断位置的弹出层效果代码
Oct 12 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
VueJs 将接口用webpack代理到本地的方法
Nov 27 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
详解Vue路由自动注入实践
Apr 17 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 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
第八节--访问方式
2006/11/16 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
实现PHP搜索加分页
2016/10/12 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
Python3处理文件中每个词的方法
2015/05/22 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python 内置模块详解
2019/01/01 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python的collections模块真的很好用
2021/03/01 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
交通法规咨询中心工作职责
2013/11/27 职场文书
产品质量承诺书范文
2014/03/27 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
学校四风对照检查材料
2014/08/28 职场文书
乱世佳人观后感
2015/06/08 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers