我编写了一个使用Jquery-ui的Javascript函数。 我可以用
关闭JQuery弹出窗口$(this).dialog("close")
但是,如果我将它包含在If条件中,就像它在这里的代码中那样,它就不起作用了。 我错过了关于这个关键字在JS中如何运作的内容吗?
马
if (vars["server_url"] !== undefined)
var serverUrl = vars["server_url"];
var ODATA_ENDPOINT = "XRMServices/2011/OrganizationData.svc";
var CRMObject = new Object();
/////////////////////////////////////////////////////////////
// Specify the ODATA entity collection
var ODATA_EntityCollection = "/custom_serviceobjectSet";
var alreadyExisting = new Object;
alreadyExisting.value = "";
retrieveExistingPlacement(serverUrl, custom_name, placering.val(), alreadyExisting);
setTimeout(function() {
alert(alreadyExisting.value);
if (alreadyExisting.value === true) {
placering.addClass("ui-state-error");
updateTips("Ett ServiceObject med sån placeringen redan finns.");
}
else if (alreadyExisting.value === false)
{
//alert(ordning.val());
$("#users tbody").append("<tr>" +
"<td>" + CRMObject.custom_order + "</td>" +
"<td>" + CRMObject.custom_Placement + "</td>" +
"<td>" + CRMObject.custom_Quantity + "</td>" +
"</tr>");
var jsonEntity = window.JSON.stringify(CRMObject);
//Asynchronous AJAX function to Create a CRM record using OData
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection,
data: jsonEntity,
beforeSend: function(XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function(data, textStatus, XmlHttpRequest) {
var NewCRMRecordCreated = data["d"];
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}
});
alert("OUT");
}
}, 1000);
if (alreadyExisting.value === false)
$("#dialog-form").dialog("close");
}
答案 0 :(得分:1)
你的问题在这里:
if (alreadyExisting.value === false)
$(this).dialog("close");
}
此不再引用该对话框。通过对话框的ID访问它,而不是使用 this
if (alreadyExisting.value === false)
$("#dialogId").dialog("close");
}
答案 1 :(得分:1)
我假设你在问这个问题:
if (alreadyExisting.value === false)
$(this).dialog("close");
}
如果是这种情况,则此条件可能永远不会执行。那是因为早些时候你做了几行:
alreadyExisting.value = "";
当然你可以这样称呼:
retrieveExistingPlacement(serverUrl, custom_name, placering.val(), alreadyExisting);
如果未将alreadyExisting.value
设置为false
,则意味着永远不会触发对话框关闭逻辑。 setTimeout()
函数中发生的任何事件都是异步发生的,因此它不会影响为alreadyExisting.value
评估的值