解決js賦值時需要新增alert方法賦值才成功否則賦值語句不執行問題
阿新 • • 發佈:2019-01-22
最近在調整頁面欄位賦值問題,在賦值語句之前存在ajax方法,在ajax方法中對賦值欄位有進行操作,ajax方法呼叫完畢後,欄位的賦值語句並不執行,新增alert語句後,賦值語句就執行了,搜尋網上的解決方法,如果是嵌入頁面的指令碼,有的是將該方法的<script></script>放置到頁面的</body>標籤之前, 加 defer 屬性,即:<script type="text/javascript" defer>...但試過後均無效果,然後找的的合理解釋是,之所以彈出alert賦值語句會執行,alert語句起到了延時的效果,為了替代alert的延時效果,我們使用setTimeOut方法,是的賦值語句延時執行,從而達到賦值效果,部分程式碼如下:
function editWindow(row){ if (row){ $('#dlg').dialog('open').dialog('setTitle','版本修改'); $('#fm').form('load',row); if(row.districtCode.substr(2, 4)=="0000"){ $("#provinceCode").val(row.districtCode); changeLevel('provinceCode','areaCode'); $("#areaCode").val(""); }else{ var pId = row.districtCode.substr(0, 2)+"0000"; $("#provinceCode").val(pId); changeLevel('provinceCode','areaCode'); window.setTimeout(function(){$("#areaCode").val(row.districtCode);},100); } url = '<%=path%>/version/updateVersion'; } }
changeLevel('provinceCode','areaCode');
為ajax方法window.setTimeout(function(){$("#areaCode").val(row.districtCode);},100);
起到延時效果的js賦值語句,100為100毫秒(1000毫秒=1秒)