动态新增删除tbody表格行与ajax请求完成后刷新父窗口问题

获取tbody内的一行数据,包括hidden类型的数据
$("#tbody_id").find("tr").each(function(){ var tdArr = $(this).children(); var servicename = tdArr.eq(0).find("input").val(); var serviceid = tdArr.eq(0).find("input[type='hidden']").val(); var price = tdArr.eq(1).find("input").val(); var count = tdArr.eq(2).find("input").val(); var server = servicename + ":" + serviceid + ":" + price + ":" + count + ","; serverList += server; });

 

获取table中选中的复选框所在行的值
var
check = $("table input[type=checkbox]:checked"); check.each(function() {//遍历选中的复选框 var row = $(this).parent("td").parent("tr");     var name = row.children().eq(1).text(); });

 

 

//获取table选中行的某列的值
$("#table_css tbody").on("click","tr",function() { var td = $(this).find("td"); var data = td.eq(1).text(); $('#companyName',parent.document).val(company); });

 

 

删除选中行方法
delTr = function delTr(nowTr){    $(nowTr).parent().parent().remove(); };

 

//动态追加内容至tbody方法

$.each(datas,function(index,value){ html += "<tr>"; html += "<td width='30%'><input readonly='readonly' type='text' name='servername_" + (trLength + index) + "' value='" + value.servicename + "'/><input type='hidden' name='serviceid_" + (trLength + index) + "' value='" + value.serviceid + "'/></td>" html += "<td width='30%''><input type='text' name='price_" + (trLength + index) + "'/></td>" html += "<td width='30%'><input type='text' name='count_" + (trLength + index) + "'/></td>" html += "<td width='9%'><button class='btn btn-info' type='button' onclick='delTr(this);'>删除</button></td>" html += "</tr>"; });  //获取父窗口的tbody元素,并动态添加行 $("#tbody_id",window.parent.document).append(html);

 

layer框架以open方式打开子窗口,并在子窗口关闭窗口方法

var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index);

  

刷新指定iframe页面数据,下面的示例是刷新父窗口的iframe数据
$("#iframe_id", window.parent.document).attr("src","${basePath}/order/info/index");

为什么上面代码这样写,是因为在ajax执行完之后回调刷新父页面,window.location.href window.parent.location.href跳转的效果都不好,网上说的window.location.reload()
window.parent.location.reload()、location.reload()、self.window.opener.locaction.reload()这些方法都没有效果,暂时不明原因, 先记录于此吧。

 

//对tbody行输入的数据进行校验,如果不用try catch方式 直接return的话,只会跳出循环,还是会往下运行代码,故采用try catch方式
try{ $("#server_t").find("tr").each(function(){   var tdArr = $(this).children();   var servicename = tdArr.eq(0).find("input").val();   var serviceid = tdArr.eq(0).find("input[type='hidden']").val();   var price = tdArr.eq(1).find("input").val();   if(!Number(price)) {   throw("请输入正确格式的价格");   return;    }   var count = tdArr.eq(2).find("input").val();   if(!Number(count)) {   throw("请输入正确格式的次数");   return;   } }); }catch(e) { alert(e); return; }

 

posted @ 2018-09-29 15:05  秋水秋色  阅读(893)  评论(0编辑  收藏  举报