点击添加按钮,使用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/ 浏览器返回功能 判断上一页面来 ...
随机推荐
- Diycode开源项目 NotificationActivity
1.NotificationActivity预览以及布局详解 1.1.首先看一下通知的具体页面. 1.2.然后是布局代码==>activity_fragment.xml <LinearLa ...
- 3 View - Request对象
1.HttpReqeust对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象 视图函数的第一个参数是HttpRequest对象 在django.http模块中定义了Htt ...
- 【LoadRunner】利用lr_db_connect函数对Oracle数据库压测的完整流程
项目中常常会有直接对数据库进行压测的需求,以前都是通过Jmeter实现的,但是Jmeter本身图表及结果收集方面没有Loadrunner那么强大,所以利用loadrunner工具自己的函数整理了一个脚 ...
- Python-S9-Day128——算法基础Algorithm
01 算法基本概念与递归: 02 二分查找与LOW B三人组 03 快速排序 04 归并排序 01 算法基本概念与递归: 1.1 算法概念 1.2 复习:递归 1.3 时间复杂度 1.4 空间复杂度 ...
- python-day3-内置函数与字符字节之间的转换
#三元运算 1 if True else 0 >>>1 1 if False else 0 >>>0 #内置函数lambda def f1(a1): return ...
- NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享
项目技术细节 项目大量用到了 ES7 的async 函数, 更直观的反应程序了的流程.为了方便,在对数据遍历的过程中直接使用了著名的async这个库,所以不可避免的还是用到了回调promise ,因为 ...
- w3wp CPU 100%问题解决
问题: web服务器w3wp CPU占用率非常高,导致整个服务器CPU 100%占用,问题无法正常重现 解决方法: --问题尚未解决,此处记录目前的解决状态 1)下载windbg 参考https:// ...
- OgnlValueStack 源码
/* * Copyright 2002-2006,2009 The Apache Software Foundation. * * Licensed under the Apache License, ...
- 【转】BehaviorDesigner学习
BehaviorDesigner学习 行为树: 行为树设计师插件是一个专门为unity设计的AI插件. 通过继承Behavior中的Task下的四个节点,可以创建自己的行为树节点. 行为树中的自定 ...
- [LOJ#2330]「清华集训 2017」榕树之心
[LOJ#2330]「清华集训 2017」榕树之心 试题描述 深秋.冷风吹散了最后一丝夏日的暑气,也吹落了榕树脚下灌木丛的叶子.相识数年的Evan和Lyra再次回到了小时候见面的茂盛榕树之下.小溪依旧 ...