点击添加按钮,使用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/ 浏览器返回功能 判断上一页面来 ...
随机推荐
- Django runserver支持https
创建自签名ssl证书 1.下载软件openssl-0.9.8k_WIN32 2.解压后进入bin目录,双击打开openssl.exe,依次运行如下命令 genrsa -des3 -out server ...
- 关于RelativeLayout设置垂直居中对齐不起作用的问题
直接上代码 1.原有代码:(红色字体部分不起作用,无法让RelativeLayout中的textview居中) <RelativeLayout Android:id="@+id/aut ...
- Apache Common-IO 使用
Apache Common-IO 是什么? Apache File 工具类,能够方便的操作 File 运行环境 jdk 1.7 commons-io 2.6 测试代码 package com.m.ba ...
- 理解机器为什么可以学习(五)---Noise and Error
之前我们讨论了VC Dimension,最终得到结论,如果我们的hypetheset的VC Dimension是有限的,并且有足够的资料,演算法能够找到一个hypethesis,它的Ein很低的话,那 ...
- Html语言的标签讲解
一.head头部中的内容: 1.<meta charset="UTF-8"> <--!告诉浏览器什么编码--> 2.<meta http-equiv= ...
- c# 钩子程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- 什么是虚假唤醒 spurious wakeup
解释一下什么是虚假唤醒? 说具体的例子,比较容易说通. pthread_mutex_t lock; pthread_cond_t notempty; pthread_cond_t notfull; v ...
- ActionContext和ServletActionContext小结
1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息, ...
- git 远程仓库回滚
git branch backup #创建备份分支 git push origin backup:backup #push到远程 git reset --hard commit_id #本地分支回滚 ...
- Ubuntu系统设置中心不见了
sudo apt-get install unity-control-center 执行安装上述即可 原因是因为在安装搜狗输入法的时候卸载了ibuts与系统控制中心