jquery 配合 ajax 完成 在线编辑 你值得拥有
思路分析:
将 table中的表格 改变成为 input表格框获得值 ajax配合修改 删除
<?php
use yii\helpers\Url; $web = Url::base();
?>
<style>
.btn-save-data {
display: none;
} .btn-cancel-data {
display: none;
}
</style>
<script type="text/javascript"> //添加 页面 尾部追加 td input 框跟值
$("#onAddBaseDataCategory").click(function () { var trtd = $('<tr>' +
"<td class='code_one'><input name='code' type='text' value=''></td>" +
"<td class='name_one'><input name='name' type='text' value=''></td>" +
"<td class='tag_one'><input name='tag' type='text' value=''></td>" +
"<td class='table-text-align-left'>" +
"<a href=javascript:void(0) onclick='onSaveBaseDataCategory(this)' data-id= '' class='btn btn-link'>保存</a>" +
"<a href=javascript:void(0) onclick='cancelBaseDataCategory(this)' data-id= '' class='btn btn-link'>取消</a>" +
"</td>" +
"</tr>");
trtd.prependTo("#baseDataCategoryTable"); }); //编辑页面
function onEditData(obj) { var id = $(obj).attr('data-id');
var object = $(obj).parent().parent(); object.find('.btn-edit-data').hide();
object.find('.btn-delete-data').hide();
object.find('.btn-save-data').show();
object.find('.btn-cancel-data').show(); var code = object.find(".code_one").text();
var name = object.find(".name_one").text();
var tag = object.find(".tag_one").text(); object.find(".code_one").html("<input data-base-title='" + code + "' name='code' type='text' value='" + code + "'>");
object.find(".name_one").html("<input data-base-title='" + name + "' name='name' type='text' value='" + name + "'>");
object.find(".tag_one").html("<input data-base-title='" + tag + "' name='tag' type='text' value='" + tag + "'>"); } // 数据保存
function onSaveBaseDataCategory(obj) { var object = $(obj).parent().parent();
object.find('.btn-save-data').show();
var id = $(obj).attr('data-id');
var is_enabled = 1; var data = {};
var code = object.find('input[name="code"]').val();
var name = object.find('input[name="name"]').val();
var tag = object.find('input[name="tag"]').val(); if (id == '') {
id = null;
} data.code = code;
data.name = name;
data.tag = tag;
data.is_enabled = is_enabled;
data.id = id; requestJson("base-data-category-save-handler", data, true, function (response) {
if (response.status == 0) {
id = response.data.id; //ajax 添加|修改 成功后 读取数据库的id
replace(object, id, code, name, tag);
} else {
errorDialog(response.message);
}
}); } //取消
function cancelBaseDataCategory(obj) { var object = $(obj).parent().parent();
var id = $(obj).attr('data-id'); if (id == '') {
object.remove();
return;
} var code = object.find('input[name="code"]').attr('data-base-title');
var name = object.find('input[name="name"]').attr('data-base-title');
var tag = object.find('input[name="tag"]').attr('data-base-title'); // //替换
object.find('.code_one').html("<td class='code_one'>" + code + "</td>");
object.find('.name_one').html("<td class='name_one'>" + name + "</td>");
object.find('.tag_one').html("<td class='tag_one'>" + tag + "</td>"); object.find('.btn-edit-data').show();
object.find('.btn-delete-data').show();
object.find('.btn-save-data').hide();
object.find('.btn-cancel-data').hide();
} //input 框 替换 表格
function replace(object, id, code, name, tag) {
var tr = '<tr>' +
"<td class='code_one'>" + code + "</td>" +
"<td class='name_one'>" + name + "</td>" +
"<td class='tag_one'>" + tag + "</td>" +
"<td class='table-text-align-left'>" +
"<a href=javascript:void(0) onclick='onEditData(this)' data-id='" + id + "' " +
"class='btn btn-link btn-edit-data'>编辑</a>" + "<a href=javascript:void(0) onclick='deleteBaseDataCategory(this)' data-id='" + id + "'" +
"class='btn btn-link btn-delete-data'>删除</a>" + "<a href=javascript:void(0) onclick='onSaveBaseDataCategory(this)' data-id='" + id + "'" +
"class='btn btn-link btn-save-data'>保存</a>" + "<a href=javascript:void(0) onclick='cancelBaseDataCategory(this)' data-id='" + id + "'" +
" class='btn btn-link btn-cancel-data'>取消</a>" +
"</td>" +
"</tr>";
object.replaceWith(tr);
return true;
} //删除基础分类
function deleteBaseDataCategory(obj) {
var object = $(obj).parent().parent();
var id = $(obj).attr('data-id');var data = {};
data.id = id;
requestJson('base-data-category-delete-handler', data, true, function (response) {
if (response.status == 0) {
object.remove();
} else {
errorDialog(response.message); //这是错误提示 自己封装的
}
}) } </script>
<div class="form-horizontal" id="base_data_category_submit_form">
<div class="panel panel-frame panel-operat">
<div class="panel-body">
<div class="panel-content">
<a type="button" class="btn btn-primary putaway-icon ">
<div class="btn-icon"></div>
<div id="onAddBaseDataCategory" class="btn-text">添加</div>
</a>
</div>
</div>
</div> <div class="panel panel-frame">
<div class="table-responsive">
<table class="table table-bordered table-hover" id="baseDataCategoryTable">
<thead>
<tr id="th">
<th>编码</th>
<th>名称</th>
<th>标签</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php
foreach ($items as $item) {
?>
<tr>
<td class='code_one'><?= $item['code'] ?></td>
<td class='name_one'><?= $item['name'] ?></td>
<td class='tag_one'><?= $item['tag'] ?></td>
<td class='table-text-align-left'>
<a href="javascript:void(0);" onclick="onEditData(this)" data-id="<?= $item['id'] ?>"
class='btn btn-link btn-edit-data'>编辑</a>
<a href="javascript:void(0);" onclick="deleteBaseDataCategory(this)"
data-id="<?= $item['id'] ?>"
class='btn btn-link btn-delete-data'>删除</a>
<a href="javascript:void(0);" onclick="onSaveBaseDataCategory(this)"
data-id="<?= $item['id'] ?>"
class='btn btn-link btn-save-data'>保存</a>
<a href=javascript:void(0) onclick='cancelBaseDataCategory(this)'
data-id="<?= $item['id'] ?>"
class='btn btn-link btn-cancel-data'>取消</a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<div class="table-pagination">
</div>
</div>
</div>
ps: requestJson 是我自己封装的ajax请求 : 配合 yii框架使用的 我给大家分享一下
/**
* ajax获取json数据
* @param url
* @param data
* @param async
* @param successFun
* @param errorFun
* @returns {{}}
*/
requestJson = function (url, data, async, successFun, errorFun) {
if (!(typeof loading === 'undefined')) {
loading.show();
} var responseData = {};
responseData.status = -100;
responseData.message = '网络不给力!';
responseData.data = null; // data._csrf = $('meta[name="csrf-token"]').attr("content"); $.ajax({
async: async || false,
type: "POST",
url: url,
data: data,
dataType: "json",
success: function (data) {
responseData = data; if (successFun) {
successFun(data);
} if (!(typeof loading === 'undefined')) {
loading.hide();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (!(typeof loading === 'undefined')) {
loading.hide();
} responseData.status = -101;
responseData.message = XMLHttpRequest.responseText; // errorMessage(responseData.message); if (errorFun) {
errorFun(responseData);
}
}
}); return responseData;
};
jquery 配合 ajax 完成 在线编辑 你值得拥有的更多相关文章
- [前端插件]Bootstrap Table服务器分页与在线编辑应用总结
先看Bootstrap Table应用效果: 表格用来显示数据库中的数据,数据通过AJAX从服务器加载,同时分页功能有服务器实现,避免客户端分页,在加载大量数据时造成的用户体验不好.还可以设置查询数据 ...
- python 全栈开发,Day56(jQuery的ajax)
昨日内容回顾 事件流: 1.事件捕获 从最外层到最内层 2.事件目标阶段 3.事件冒泡 从最内层到最外层 每个事件都会事件对象 event 属性和方法 属性: event.target 目标节点(冒泡 ...
- 补充:jQuery的ajax
一.jQuery的ajax 什么是ajax AJAX = 异步的javascript和XML(Asynchronous Javascript and XML) 简言之,在不重载整个网页的情况下,AJA ...
- 【原创经验分享】JQuery(Ajax)调用WCF服务
最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...
- jQuery与ajax 基础运用
jQuery是一个轻量级js框架,使用方便快捷,更是封装ajax处理方法,如$.load() $.get() $.post() 等 但最常用的方法还是$.ajax() 一.一般的格式为 $.ajax( ...
- 关于Jquery中ajax介绍
jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需 ...
- 网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- 触碰jQuery:AJAX异步详解
触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...
- jQuery调用AJAX异步详解[转]
AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1) 使用CSS和X ...
随机推荐
- C#之Clone
因为类的实例是引用类型,要想用原有的类中的实例的数据的话,既要想创建原对象的一个副本的话,只能用clone方法. Clone方法分为深clone和浅clone 在C#中提供了浅clone的方法,即为M ...
- [转]Linq语法一
LINQ即语言集成查询,是.NET Framework 3.5中新增的功能.其功能类似于数据库中的SQL语句(实际上LINQ就是针对.NET Framework的SQL):提供标准的.易于学习的查询和 ...
- php token
接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程: 3.有点接口需要用户登录 ...
- C#变量、常量
变量 一.命名变量:标识符 为变量命名时要遵循C#语言的命名规范: 1.变量名只能由字母.数字和下划线组成,而不能包含空格.标点符号.运算符等其他符号 2.变量名不能与C#中的关键字名称相同 二. ...
- 【Unity3D学习笔记】解决放大后场景消失不显示问题
不知道为啥,我的Unity场景放大到一定大小后,就会消失... 解决方案: 选中一个GameObject,然后按F键. F键作用是聚焦,视图将移动,以选中对象为中心.
- python_opencv应用系列1:图片读写
opencv的读写非常简单,主要用到的就是imread和imwrite两个函数 读取图片示例 import cv2 #imread(filename[, flags]) -> retval im ...
- oop编程思想
oop的编程思想:抽象.封装.继承.多态. 1.抽象: 数据抽象:类描述的对象的属性或状态 行为抽象:类描述的对象的行为或功能 举例: 时钟:Class 数据:int Hour,Minute,Seco ...
- vue中列表的过渡
<style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition: opaci ...
- 2017.9.25 JSP内置对象的概述
1.JSP的定义: 在JSP中是为了便于数据信息的存储.传递.获取,专门设置了九个内置对象, jsp内置对象是指他们是预先设定的,不需创建,每个对象都有自己的属性和方法. 2.JSP内置对象 对象名称 ...
- CSS-DOM
在所有的产品设计中,选择最适用的工具去解决问题是最基本的原则. ①使用(X)HTML去搭建文档的结构. ②使用CSS 去设置文档的呈现效果. ③使用DOM脚本去实现文档的行为. 文档中的每个元素都是一 ...