js回調函數、父畫面與子畫面之間的js回調函數(含參數傳遞)
(執行順序:①→②→③→④)
function①→A.jsp(父畫面)上的方法
// 子畫面の呼出
function openSubWindow(clubNo, fileId) {
//サイズ決定
var windowSize = 'dialogWidth:' + '520' + 'px;dialogHeight:' + '330'+ 'px'
+ 'center:yes;help:no;resizable:no;scroll:no;status:no;unadorned:no;dialogHide:no';
//遷移先
var val = new Array();
val["action"] = "/Zfn110fjUploadInit";
var actionUrl = ACTION_PATH_BASE + val["action"];
actionUrl = actionUrl.replace(/;jsessionid=.*$/, "")
+ ".do?callBackFunction=setFileName&state=other&clubNo=" + clubNo + "&fileId=" + fileId;
//ウィンドウ表示
window.showModalDialog(actionUrl, window, windowSize);
}
①setFileName即爲子畫面(B)執行後,父畫面(A)要執行的方法,即:callBackFunction的方法②藍色字部分:該子畫面是以window.showModalDialog的形式打開的故子畫面callBackFunction時應以window.dialogArgum
function②→B.jsp(子畫面)上的方法
// 畫像ファイルをアップロード
function fileSelect() {
var fileId = document.getElementById("fileId").value;
var objName = "file" + fileId;
var fileObj = document.getElementById(objName);
var filePath = fileObj.value;
document.getElementById("filePath").value = filePath;
var url = location.search;
document.getElementById("initFlg").value = "1";
if (filePath == null || filePath == "") {
alert("畫像ファイルを指定してください。");
return;
} else {
var fileType = filePath.split(".")[1];
if (fileType == "jpg" || fileType == "jpeg") {
document.getElementById("url").value = url;
doSubmit('/Zfn110fjFileUpload', null);
} else {
alert("拡張子が、jpg 又はjpeg 以外の畫像は指定できません。");
return;
}
callBack();
}
}
function③→B.jsp(子畫面)上的方法
function callBack() {
var fileId = document.getElementById("fileId").value;
var clubNo = document.getElementById("clubNo").value;
var filePath = document.getElementById("filePath").value
var fileName = filePath.substr(filePath.lastIndexOf('\\') + 1);
var upLoadFlg=document.getElementById("upLoadFlg").value;
var url=document.getElementById("url").value;
if (url.indexOf("?") != -1) {
var str = url.substr(1);
urlSplit = str.split("&");
urlCallBack = urlSplit[0].split("=");
}
var callBackFunction = urlCallBack[1];
var fileSavePathTmp = "<%=jp.co.central.zeus.common.CentralConstant.NAVI_UPLOAD_PATH_IMG%>";
var fileSavePath = fileSavePathTmp.replace("XXX", clubNo) + "/"
+ fileName;
strRun = "window.dialogArguments." + callBackFunction + "('" + fileName
+ "','" + fileId + "','" + fileSavePath + "','" + upLoadFlg
+ "');";
if (window.dialogArguments) {
eval(strRun);
}
}
③B畫面執行後,調用A畫面上的方法,即:執行callBackFunction。④藍色字部分:window.dialogArguments形式返回
function④→A.jsp(父畫面)上的方法
// callBackFunctionの呼出
function setFileName(fileName, fileId, fileSavePath,upLoadFlg) {
//alert("1 upLoadFlg=" + upLoadFlg);
if (upLoadFlg == "") {
var fileNameStr = "gazou" + fileId;
document.getElementById(fileNameStr).value = fileName;
var fileSavePathStr = "gazouPath" + fileId;
document.getElementById(fileSavePathStr).value = fileSavePath;
}
if (upLoadFlg == "1") {
var file1Id = "'" + fileId + "'";
var tableId = "tableMess" + fileId;
var table = document.getElementById(tableId);
var fileNameStr = "gazou" + fileId;
var fileName = document.getElementById(fileNameStr).value;
if (fileId == "1" || fileId == "2") {
table.rows[3].cells[1].innerHTML = '<hj:link href="javascript:void(0);" styleId="gazou1" οnclick="photoSearch('
+ file1Id+ ');" >' + fileName + '</hj:link>'
+ '<html:button property="" styleId="delete1" value="削除" οnclick="deleteGazou('
+ file1Id + ');" ></html:button>';
} else {
table.rows[4].cells[1].innerHTML = '<hj:link href="javascript:void(0);" styleId="gazou1" οnclick="photoSearch('
+ file1Id+ ');" >'+ fileName + '</hj:link>'
+ '<html:button property="" styleId="delete1" value="削除" οnclick="deleteGazou('
+ file1Id + ');" ></html:button>';
}
} else if (upLoadFlg == "0") {
var fileNameStr = "gazou" + fileId;
document.getElementById(fileNameStr).value = "";
var fileSavePathStr = "gazouPath" + fileId;
document.getElementById(fileSavePathStr).value = "";
}
}