Hi Banne,
As your code shows, you invoke "formContext.data.save();" twice. This should be the reason why this popup disappear.
It seems that you want to compare the date form another table with today and then set some fields' value.
If so, you could delete the line "formContext.data.save();" at the end of the function. Something like this:
function CheckIsFutureJCP(executionContext) {
debugger;
var formContext = executionContext.getFormContext();
var d = new Date();
var DateJour = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0);
var todayDate = DateJour.format('yyyy-MM-dd');
//var StartDateColl = new Date(formContext.getAttribute("nbk_date").getValue());
var CheckInBtn = formContext.getAttribute("nbk_checkinbtn").getValue();
var CheckOutBtn = formContext.getAttribute("nbk_checkoutbtn").getValue();
var JCPLookup = formContext.getAttribute("nbk_jcp").getValue();
if (JCPLookup == null) {
return;
}
var JCPGuid = JCPLookup[0].id;
var newJCPGuid = JCPGuid.replace("{", "").replace("}", "");
Xrm.WebApi.online.retrieveRecord("nbk_jcp", newJCPGuid, "?$select=nbk_date").then(
function success(result) {
//var nbk_date = result["nbk_date"];
var JCPdatecoll = new Date(result["nbk_date"]);
if (JCPdatecoll == null) {
return;
} else {
var JCPdateJour = new Date(JCPdatecoll.getUTCFullYear(), JCPdatecoll.getUTCMonth(), JCPdatecoll.getUTCDate(), 0, 0, 0);
var JCPDate = JCPdateJour.format('yyyy-MM-dd');
}
//for Mark Complete Button
if (CheckOutBtn == true && CheckInBtn == true) {
if (JCPDate <= todayDate) {
formContext.getAttribute("nbk_showmarkcomplete").setValue(799240000); //setting Yes value
} else {
formContext.getAttribute("nbk_showmarkcomplete").setValue(799240001); //setting No value
}
}
//for Close Customer Visit Button
if (JCPDate <= todayDate) {
//alert("button enabled");
formContext.getAttribute("nbk_isfuturejcp").setValue(799240001); //setting No value
formContext.getAttribute("nbk_shonbkosecustomervisit").setValue(799240000); //setting Yes value
formContext.data.save();
// return true;
} else {
//alert("button disabled");
formContext.getAttribute("nbk_isfuturejcp").setValue(799240000); //setting Yes value
formContext.getAttribute("nbk_shonbkosecustomervisit").setValue(799240001); //setting No value
formContext.data.save();
// return false;
}
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);
}
And if this JS code is triggered when the data is save(onsave event), please add preventDefault() method.
Please refer to this blog:Cancelling save event based on the result of async operation - Andrew Butenko's Blog