|
今天看 ecshop 的时候看到里面修改商品名称的效果。看他的代码很烦。于是在网上找的几个例子,稍微改了下。
cat_ajax.js
/*
* 说明:用Jquery的方法,无刷新页面,编辑表格
*/
$(function() {
//给页面中有caname类的标签上加上click函数
$(".caname").click(function() {
var objTD = $(this);
//先将老的类别名称保存起来,并用trim方法去掉左右多余的空格
var oldText = $.trim(objTD.text());
//构造一个input的标签对象(作用是为了让这个input失效,不然点击多次后,文字会消失)
var input = $("<input type='text' value='" + oldText + "' />");
//当前td的内容变为文本框,并且把老类别名放进去
objTD.html(input);
//设置文本框的点击事件失效
input.click(function() {
return false;
});
//设置文本框样式,让界面显示的人性化点
input.css("font-size", "12px");
input.css("text-align", "center");
input.css("background-color", "#F7F2DE");
input.width("120px");
//自动选中文本框中的文字
input.select();
//文本框失去焦点时重新变为文本
input.blur(function() {
//获得新输入的类别名
var newText = $(this).val();
//获取该类别名所对应的ID(caId)
var caId = objTD.prev().text();
//获取要传到"一般处理文件"中的URL
var url = "cat.php?act=4&caid=" + caId + "&catname=" + newText; //处理函数类路径
//AJAX异步更改数据库,data为成功后的回调返回值,用于判断结果提示
$.get(url, function(data) {
if(data == 1) {
//用新的类别名文字替换之前变过来的输入框状态
objTD.html(newText);
$("#div_id_msg").text("");
} else{
alert('修改失败!');
}
});
});
});
});
cat.php
if($act == 4)//修改类别名
{
$id = isset($_REQUEST['caid']) ? $_REQUEST['caid'] : '0';
if(!ctype_digit($id))
{
exit;
}
$catname = isset($_REQUEST['catname']) ? trim($_REQUEST['catname']) : '';
if(empty($catname) || len($catname) > 50){exit;}
$result = $dbObj->execute('UPDATE `cat` SET `name` = "'.$catname.'" WHERE `id` ='.$id);
if($result)
{
echo 1;//修改成功
}else
{
echo 0; //修改失败
}
}
cat.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>文章类别</title>
<link rel="stylesheet" type="text/css" href="skin/css/base.css">
<script language="javascript" src="skin/js/frame/jquery-1.3.2.min.js"></script>
<script language="javascript" src="skin/js/frame/cat_ajax.js"></script>
</head>
<body>
<table>
<tr><td id="cat" class='caname'>测试</td></tr>
</table>
</body>
</html>
|
|
|