我需要帮助尝试根据数据库通过ajax的结果停止发生保存事件。但是我似乎正在失去我的"事件"变量,我不知道如何保持它。非常感谢您的帮助。
基于点击保存按钮的功能:
jQuery('#saveButton').on('click',function(){
checkForOpenActions(event)});
Ajax电话:
function checkForOpenActions(event) {
// determine if case has any case actions that are not resolved.
if (jQuery('#PboCaseResolution_caseAction').val() != '') {
jQuery.getJSON("page.request.do?page=com.blah.ajax", {
trackingId: '$!parentId'
},
function(data) {
alert("data: " + data);
if (data == 1) {
alert("data is 1");
if (confirm('There are open actions on this case. Are you sure you want to close it?')) {
return true;
} else {
stopSave(event);
return false;
}
}
});
}
}
从Ajax调用以停止保存:
function stopSave(event){
alert("preventing Default");
event.preventDefault();
}
非常感谢你的帮助!
答案 0 :(得分:0)
由于您在AJAX回调函数中执行确认,因此它以异步方式运行,因此您无法使用event.preventDefault()
- 原始事件处理程序已经返回。
您需要无条件地调用event.preventDefault()
,然后在用户确认时在回调函数中显式执行保存。您可以在包含按钮的表单上调用submit()
来执行此操作。
jQuery('#saveButton').on('click', function(event) {
checkForOpenActions(event);
});
function checkForOpenActions(event) {
// determine if case has any case actions that are not resolved.
if (jQuery('#PboCaseResolution_caseAction').val() != '') {
event.preventDefault();
jQuery.getJSON("page.request.do?page=com.blah.ajax", {
trackingId: '$!parentId'
},
function(data) {
alert("data: " + data);
if (data == 1) {
alert("data is 1");
if (!confirm('There are open actions on this case. Are you sure you want to close it?')) {
return;
}
}
event.target.form.submit();
});
}
}