动态新增删除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;
}