I have a javascript in custom list newform looks this
<script type="text/javascript">
var kontivalue = 0;
function PreSaveAction(){
belegnummer = SPUtility.GetSPField('Belegnummer').GetValue();
Netamount = SPUtility.GetSPField('Nettobetrag').GetValue();
retrieveList().then(function(){
var nettovalue = Nettobetrag;
var totalamount = kontivalue + Netamount;
});
if(totalamount <= nettovalue){
return true;
$('.FormErrors').hide();
}
else{
$('.FormErrors').show();
return false;
}
}
function retrieveList() {
return getItems('InvoiceAccountAssignments').then(
function(camlValue){
var listItemEnumerator = camlValue.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem1 = listItemEnumerator.get_current();
kontivalue = kontivalue + oListItem1.get_item('InvoiceAccountAssignmentsAmountN');
}
},
function(sender, args) {
alert('An error occured while retrieving list items:' + args.get_message());
}
);
}
function getItems(listTitle) {
var belegvalue = window.belegnummer;
var deferred = $.Deferred();
var clientContext = new SP.ClientContext.get_current();
var list = clientContext.get_web().get_lists().getByTitle(listTitle);
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View Scope=\'RecursiveAll\'><Query><Where><Eq><FieldRef Name=\'AttachedToInvoiceID\'/><Value Type=\'LookUp\'>'+ belegvalue +'</Value></Eq></Where></Query></View>');
var items = list.getItems(camlQuery);
clientContext.load(items);
clientContext.executeQueryAsync(
Function.createDelegate(this,
function () { deferred.resolve(items); }),
Function.createDelegate(this,
function (sender, args) { deferred.reject(sender, args);})
);
return deferred.promise();
};
</script>
I changed my code according to the MdMazz.. comment below. i got one step further but the code works when i press the save button second time because the retrieveList() function is async. Thank you.