点击添加按钮,使用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/ 浏览器返回功能 判断上一页面来 ...
随机推荐
- vscode运行C/C++程序及配置
安装vscdoe,安装tdm-gcc-64编译器,这样可以自动把mingw的目录添加到环境变量中,其实安装其他编译器本版都可以,只要手动添加环境变量即可.平台win10-64位.此文参考了哔哩哔哩的配 ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest(青岛网络赛)
A Live Love 水 #include <algorithm> #include<cstdio> #include<cstring> using namesp ...
- RCP 项目启动图片设置
第一步 选择启动图片命名为 splash.bmp 第二步 添加 扩展点 然 后在右边的扩展元素细节中填入相应的信息,比如我们在这里的application属 性 为 org.vwpolo.rcp.ex ...
- Django基于Pycharm开发之三[命名空间 与过滤器]
关于命名空间的问题,在project项目中,我们可以设置路由类似于: from django.conf.urls import url,includefrom django.contrib impor ...
- datagrid的增加功能的实现
一.增加 1.行编辑状态所需的条件 (1)在columns中添加editor,注意type的设置 (2)调用beginEdit方法,开启行编辑 添加到第一行: 添加到最后一行: (2)如果有一行开启了 ...
- C 语言 习题 1-12
练习 1-12 编写一个程序,以每行一个单词的形式打印其输入. #include <stdio.h> #define IN 1 #define OUT 0 int main(int arg ...
- 【Python】locust框架接口性能测试(一)
本人工作中主要对接口与web进行性能测试,而接口测试主要为http协议接口和webservice接口,本文主要对locust框架http接口测试先进行简单介绍. 1.测试需求 对某系统登录接口进行测试 ...
- thulac安装问题
目标:在anaconda里面安装thulac. 1.打开Anaconda Prompt 2.输入pip install thulac 结果:报错! 报错画面如下: 解决方案: 1.到https://p ...
- [oldboy-django][6其他]navicat远程登录没有权限
day6-17-1204 # 增加远程访问mysql的权限(就是其他ip地址远程访问另外一个ip地址的数据库) -- step1 修改配置文件,bind_address, 允许所有ip地址都可以访问m ...
- Android简单的BaseExpandableList使用
1.Activity package com.example.administrator.mystudent.ExpandableListView; import android.app.Expand ...