jqueryUI插件$("#id")dialog的形式弹出框里边数据丢失(编辑操作)【结贴给分】

魔鬼_ 2015-08-27 04:32:09
jsp页面js文件引入:
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.8.3.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-ui-1.8.18.custom.min.js"></script>
<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/css/jquery-ui-1.8.18.custom.css">
<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/notebook/notebook_files/bootstrap.css">

<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/js/ZebraDatepicker/public/default.css">
<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/js/ZebraDatepicker/public/reset.css">
<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/js/ZebraDatepicker/public/style.css">

<script type="text/javascript" src="${pageContext.request.contextPath}/js/ZebraDatepicker/core.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/ZebraDatepicker/zebra_datepicker.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/businessmana/radiationmana/list.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/laydate/laydate.js"></script>
用于承载弹出框的DIV标签:
<div id="editradiationdiv" style="display: none">
<table style="border:1px; border-color: red;width: 100%">
<thead>
<tr>
<td>货物名称</td><td>辐照数量</td><td>辐照重量</td><td>辐照方式</td><td>辐照时间</td>
</tr>
</thead>
<tr>
<td><input id="divcargoname" name="divcargoname" type="text" disabled="disabled" /> <input type="hidden" id="receiveorgid" name="receiveorgid" /> </td>
<td>
<input type="text" id="irradednum" name="irradednum" />  
<input type="hidden" id="hiddenoldirradednum"/>
<crazy:dictselect id="showcountorginfos" name="showcountorginfos" collection="${showcountorginfos}" ></crazy:dictselect>
</td>
<td> <input type="text" id="cargoweight" name="cargoweight" /> </td>
<td><crazy:dictselect id="irradtypes" name="irradtypes" collection="${irradtypes}" ></crazy:dictselect></td>
<td> <input type="text" id="irradtime" name="irradtime" /> <crazy:dictselect id="timeorgs" name="timeorgs" collection="${timeorgs}" ></crazy:dictselect> </td>
</tr>
</table>

<table>
<thead>
<tr>
<td>日期</td>
<td>序号</td>
<td>交接时间</td>
<td>首位吊具号</td>
<td>辐照批号</td>
<td>入场时间</td>
<td>吊具号码</td>
<td>装载模式</td>
<td>运行参数</td>
<td>运行圈数</td>
<td>变动说明</td>
<td>下圈开始时间</td>
<td>备注</td>
</tr>
</thead>
<tr>
<td> <input type="text" id="doirraddate" placeholder="格式:yyyy-mm-dd" /> </td>
<td> <input type="text" id="ordernum" /> </td>
<td> <input type="text" id="connecttime"/> </td>
<td> <input type="text" id="firstspreadernum" /> </td>
<td> <input type="text" id="irradbatchnum" /> </td>
<td> <input type="text" id="entrancetime" /> </td>
<td> <input type="text" id="spreadernum" /> </td>
<td> <crazy:dictselect id="loadmodel" name="loadmodel" collection="${loadmodel}" ></crazy:dictselect> </td>
<td> <input type="text" id="runparam" /> </td>
<td> <input type="text" id="runcycle" /> </td>
<td> <input type="text" id="changedesc" /> </td>
<td> <input type="text" id="nextcyclestarttime" /> </td>
<td> <input type="text" id="mask" /> </td>
</tr>
</table>
</div>
弹出框js注册代码:
function goeditradiation(id,receivemgrid){
globalstillid = id+"-"+receivemgrid;
//在此初始化(存在bug)
$("#editradiationdiv").dialog({
autoOpen : false,// 设置对话框打开的方式 不是自动打开
show : "bind",
hide : "explode",
modal : true,
height : 350,
width : 900,
title: "编辑",
buttons : {
'保存' : function() {
var irradednum= document.getElementById("irradednum").value;
var hiddenoldirradednum= document.getElementById("hiddenoldirradednum").value;
if(parseInt(irradednum) > parseInt(hiddenoldirradednum)){
alert("辐照数量不能超过已有货物数量!");
return;
}
if(!CommnUtil.validatetime($("#doirraddate").val())){
alert("日期格式错误!\n 格式:yyyy-mm-dd");
return;
}
if(CommnUtil.haveOneTagIsNull("doirraddate,ordernum,connecttime,firstspreadernum,irradbatchnum,entrancetime,spreadernum,runparam,runcycle,changedesc,nextcyclestarttime"))
{
alert("标红信息必须填写!");
return;
}
saveradiation();
$(this).dialog("close");
},
"取消" : function() {
$(this).dialog("close");
}
},
open : function(ev, ui) {

// CommnUtil.cleanInputValue("addcargoname,org,irradtype,irradtime,timeorg");
},
close : function(ev, ui) {
//CommnUtil.cleanInputValue("divcargoname,receiveorgid,irradednum,hiddenoldirradednum,showcountorginfos,cargoweight,irradtypes,irradtime,timeorgs");
}
});
initradiation();
$('#editradiationdiv').dialog('open');
}

弹出框内部数据初始化代码:
function initradiation(){
var id = globalstillid.split("-")[0];
var data = CommnUtil.normalAjax("/business/receivingmana/goradiation.do","id="+id, "json");
if(CommnUtil.notNull(data)){
alert("irradednum : "+data.cargocount+"\n"+"cargoweight : "+data.cargoweight+"\n"+"irradtime : "+data.irradtime);
$("#receiveorgid").val(data.receiveorgid);
$("#divcargoname").val(data.cargoname);
$("#hiddencargoid").val(data.cargoid);
//$("#irradednum").val(data.cargocount);//jquery可能与jquery的弹框有冲突使用此种方式无效改用如下方式
document.getElementById("irradednum").value=data.cargocount;
$("#hiddenoldirradednum").val(data.cargocount);//
$("#showcountorginfos").find("option[value='"+data.countorg+"']").attr("selected",true);
//$("#cargoweight").val(data.cargoweight);//jquery可能与jquery的弹框有冲突使用此种方式无效改用如下方式
document.getElementById("cargoweight").value=data.cargoweight;
$("#irradtypes").find("option[value='"+data.irradtype+"']").attr("selected",true);
//$("#irradtime").val(data.irradtime);//jquery可能与jquery的弹框有冲突使用此种方式无效改用如下方式
document.getElementById("irradtime").value=data.irradtime;
$("#timeorgs").find("option[value='"+data.irradtimeorg+"']").attr("selected",true);
}
}
问题:
弹出框是编辑操作,通过ID取的数据,然后通过initradiation()这个js函数展现数据,初始化的值能alert出来,我也用了纯dom往输入框(input标签)里边塞值了,但是就是不显示。。。和解?
万能的吧友求助
...全文
612 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔鬼_ 2015-12-11
  • 打赏
  • 举报
回复
引用 4 楼 flyfeifei66 的回复:
有没有截图? 承载显示的div先别隐藏, 初始化的东西是不是在原div里展示了? 对比下就知道了,也就知道改怎么实现了。f12看下alert出来的东西的div,通过他 再往里面find控件初始化就应该可以了。
我解决了给你分享下: $("#editcargo").click("click", function() { editfalg = "edit"; $("#adddialog").attr("title","编辑货物"); var dialogParent = $("#adddialog").parent(); var dialogOwn = $("#adddialog").clone(); dialogOwn.hide(); $("#adddialog").dialog({ autoOpen : false,// 设置对话框打开的方式 不是自动打开 show : "bind", hide : "explode", modal : true, height : 500, width : 450, buttons : { '保存' : function() { if("add"==editfalg){ if (addcargo()) { $(this).dialog("close"); search(0, "true"); } } else if("edit"==editfalg){ if(saveEditCargo()){ $(this).dialog("close"); search(0, "true"); } } }, "取消" : function() { $(this).dialog("close"); } }, open : function(ev, ui) { if("edit"==editfalg){ initeditcargo(); } // CommnUtil.cleanInputValue("addcargoname,org,irradtype,irradtime,timeorg"); }, close : function(ev, ui) { $("#addcargoname").attr('disabled',false); CommnUtil.cleanInputValue("addcargoname,org,irradtype,irradtime,timeorg"); dialogOwn.appendTo(dialogParent); $(this).dialog("destroy").remove(); } }); if(CommnUtil.isHaveSelectOneCheckbox("cargoes")){ $('#adddialog ').dialog('open'); } else{ alert("只能选择一个货物!"); } }); 原理就是把原始的div先克隆一下,然后隐藏,最后关闭窗口的时候咋洗把克隆的那个放进去,项目上线了,我就只这么搞得一直没有出现问题。
ZhaoJuFei 2015-09-21
  • 打赏
  • 举报
回复
有没有截图? 承载显示的div先别隐藏, 初始化的东西是不是在原div里展示了?
对比下就知道了,也就知道改怎么实现了。f12看下alert出来的东西的div,通过他
再往里面find控件初始化就应该可以了。
ZhaoJuFei 2015-09-21
  • 打赏
  • 举报
回复
有没有截图? 承载显示的div先别隐藏, 初始化的东西是不是在原div里展示了? 对比下就知道了,也就知道改怎么实现了。f12看下alert出来的东西的div,通过他 再往里面find控件初始化就应该可以了。
ZhaoJuFei 2015-09-21
  • 打赏
  • 举报
回复
太长了,没细看;我确实遇到过类似的问题;我的理解,alert出来的div是页面上定义好的内容的复制,这个复制跟java的复制差不多,是“浅复制”,会丢失东西;我当时是丢失的样式,其他的依赖也不是很清楚,最好alert出来的东西别太复杂,尽量都是些基础的html,太复杂的你可以考虑弹出“页面”,把需要展示的单独写在一个页面里,试试行不行。
魔鬼_ 2015-08-27
  • 打赏
  • 举报
回复
补充:弹出框能显示,但是里边的输入框没有显示应该有的值

87,884

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧