点击添加按钮,使用ajax动态添加一行和移除一行,并且序号重新排序和数据不重复操作判断
<div class="control-group " style="top: -20px;position: relative;">
<label class="control-label">
<g:message code="终端编号" />:
<g:select optionKey="id" class="icon-resize-full terNo" optionValue="terNo"
from="${com.cnpay.entity.HandTerminal.executeQuery('from HandTerminal where status = 0 order by version asc')}"
name="terNo" noSelection="['':'请选择']">
</g:select>
<span class="color terNoMsg"></span>
<input type="button" class="btn btn-success btn-mini btn-add" value="添加一行"/>
</label>
</div> <div class="control-group " style="top: -20px;position: relative;">
<table class='table table-bordered table-striped table-condensed' style='margin-bottom:0;'>
<thead>
<th><div class='text-center'>序号</div></th> <th><div class='text-center'>终端编号</div></th> <th><div class='text-center'>所属牧场</div></th> <th><div class='text-center'>操作</div></th>
</thead> <tbody id="tbody"> </tbody>
</table>
</div>
/**
*添加一行
*/
$(".btn-add").click(function() {
/**
*获取select下拉列表的value值
* @type {*|jQuery}
*/
var id = $(".terNo").children("option:selected").val(); var hasRepeatValue = false;
$("#tbody").find("tr").each(function() {
var trid = $(this).attr("id");
if (id == trid) {
//如果tr的id已经存在就返回一个true就不让再添加相同的数据
hasRepeatValue = true;
}
}); /**
*@ ajax 添加行
*/
if (!hasRepeatValue) {
$.ajax({
url: "selectFarmName",
type: "post",
dataType: "json",
data: {
"id": id
},
success: function(data) {
if (data.success) {
/**
* 上面已经判断了 如果我添加一行把我select value值带到后台
* 再把id返回给tr
* 如果我已经有了这个tr 就不会执行我的这里的ajax
* @type {string}
*/
var tr = "<tr id=" + data.id + ">";
tr += "<td><input type='hidden' class='handTID' value='" + data.id + "'/>";
tr += "<div class='text-center' id='No'></div></td>";
tr += "<td><div class='text-center'>" + data.terNo + "</div></td>";
tr += "<td><div class='text-center'>" + data.farmName + "</div></td>";
tr += "<td><div class='text-center'><button type='button' class='btn btn-danger btn-mini btn-remove'>删除</button></div></td>";
tr += "</tr>";
$("#tbody").append(tr);
/**
*@ 记住 js是从上往下执行的要生成行tr
* 然后循环每一行 拿到每行的第一个列td
* 把序号赋值给第一个td的子元素id为No的div
*/
$("#tbody").find("tr").each(function(i) {
$(this).find("td:first").children("div#No").html(i + 1);
}); }
},
error: function() {
alert("系统异常,请稍后重试!");
}
});
} else {
$("#add").modal('hide') $("#tips").modal('show'); }
});
/**
*@ 删除一行 这个删除按钮是ajax里面生成的按钮
* 删除一行 就把每行的第一个td子元素
* id为No的div序号自动重新排序
*/
$("#tbody").delegate("button.btn-remove", "click",
function() {
$(this).closest("tr").remove();
$("#tbody").find("tr").each(function(i) {
$(this).find("td:first").children("div#No").html(i + 1);
});
});
另外我再带上我每一行的数据怎么用ajax带到后台
$("#btnSave").click(function() {
var obj = {}; //声明一个对象
/**
* 我这里是个例子 是把一行的数据放到json里带到后台
* 一行数据 所以我就写了id 获取id的值放到obj这个对象里
* 如果你有多行数据 你就取class的值
* 因为class是可重复的 id是不可重复的
* 例: obj.jobName=$(this).find(".jobName").val();
*/
obj.operatorName = $("#operatorName").val();
obj.jobName = $("#jobName").val();
obj.username = $("#username").val();
obj.password = $("#password").val();
obj.hand = [];
var objc = {}
$("#tbody").find(".handTID").each(function() {
objc.hid = $(this).val();
obj.hand.push(objc.hid);
});
$.ajax({
url: 'saveOne',
type: 'post',
data: {
"json": JSON.stringify(obj)
},
success: function(data) {
if (data.success) {
window.location = '${createLink(controller: 'systemUser ', action: 'indexs ')}';
} else {
alert("保存异常!");
}
},
error: function() {
alert("系统异常,请稍后重试!");
}
});
});
ssss
点击添加按钮,使用ajax动态添加一行和移除一行,并且序号重新排序和数据不重复操作判断的更多相关文章
- jquery获取不了ajax动态添加的内容的解决办法
在HTML页面的一个button <div class="ajaxClick"> <button>内容</button> </div> ...
- vue2.0 实现click点击当前li,并动态添加class(这种方法不太喜欢)
1,文件内容 ---- 使用v-for遍历数据 ---- @click="selectSort(item)"添加点击事件,并把每个obj=item传入 ---- v-show=&q ...
- vue 动态添加 <style> 样式 vue动态添加 绑定自定义字体样式
created(){ //动态添加自定义字体样式 let style = document.createElement('style'); style.type = "text/css&qu ...
- 动态添加布局、动态添加View、LinearLayout动态添加View;
LinearLayout提供了几个方法,用作动态添加View特别好用: 可以添加View.删除View.删除指定位置View.删除全部View: 看代码: public class MainActiv ...
- python 面向对象六 动态添加方法 __slots__限制动态添加方法
一.动态添加属性 >>> class Student(object): pass >>> st = Student() >>> st.name = ...
- ajax动态添加复选框
function getLands() { $.ajax({ url:"httpserver.do?doPost&userQygs="+$("#userQygs& ...
- ajax动态添加的li不能绑定click事件
单纯的给li标签添加click事件,是不会执行的. 经过试验 <ul id="searchedUser"><li>搜索结果</li></u ...
- 原生ajax动态添加数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 浏览器后退按钮导致jquery动态添加的select option值丢失的解决方法
监控浏览器返回功能 判断浏览器返回功能 禁用浏览器的后退按钮 JS禁止浏览器后退键 http://volunteer521.iteye.com/blog/830522/ 浏览器返回功能 判断上一页面来 ...
随机推荐
- C语言实例解析精粹学习笔记——44(冒泡排序)
冒泡排序,从序列的最后一个元素与前一个元素比较大小,如果R[n-1]>R[n]则交换两个元素的位置(R[0]作为临时存放区)将最小的数据交换到R[1],第二次循环将第二小的数交换到R[2].通过 ...
- A1083 List Grades (25)(25 分)
A1083 List Grades (25)(25 分) Given a list of N student records with name, ID and grade. You are supp ...
- Linux安全层详解
1 bastion(安全堡垒系统)通常配置两个服务: 1 服务定义系统的功能: 2 服务支持远程访问: 原则: 1 不需要某个软件卸载掉: 2 需要某个软件但不使用就不要激活: 为各个bastion系 ...
- Codeforces Round #460 (Div. 2)-B. Perfect Number
B. Perfect Number time limit per test2 seconds memory limit per test256 megabytes Problem Descriptio ...
- 在MAC下使用Robotframework+Selenium2【第一枪】robotframework安装步骤
最近使用苹果的MAC Pro本本,感受着苹果系统的新鲜,确实让我手忙脚乱一阵,毕竟使用windows系统太长时间了,刚开始用MAC Pro确实感觉别扭,用了一段,发现MAC系统还不错,好了,转入正题. ...
- poj2955:Brackets
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8716 Accepted: 4660 Descript ...
- Nodejs-内置核心模块&npm包管理工具
1.核心模块的意义 如果只是在服务器运行JavaScript代码,其实意义不大(浏览器就可以解决)因为无法实现功能(读写文件,访问网络) Node的用处在于本身还提供了一系列的功能模块,用于与操作系统 ...
- 用js立即执行函数开发基于bootstrap-multiselect的联动参数菜单
代码调用方式如下: data=[{F0:总分类cd,F1:总分类name,F2:大分类cd,F3:大分类name,F4:中分类cd,F5:中分类name,F6:小分类cd,F7:小分类name},.. ...
- HDU3232 Crossing Rivers 数学期望问题
Crossing Rivers ...
- 【bzoj4066】简单题 KD-tree
题目描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 将格子x,y里的数 ...