我有以下代码:
$('#btnCreate').click(function (e) {
var object;
if ($(this).hasClass('Create')) {
Action = 'Create';
}
if ($(this).hasClass('Update')) {
Action = 'Update'
}
switch(Action) {
case x:
object=GetFirstFunction();
break;
case y:
GetSecondFunction();
break;
}
$.ajax({
//passing here all the required things to make a call
data:object,
//something
});
});
function GetFirstFunction(){
var obj = new Object();
$('.dlist').each(function (e) {
if ($(this).val() == '') {
alert('Please select all the dropdowns');
return false;
}
obj.Id=$('#Id').val();
obj.Dept=$('#Dept').val();
obj.Position=$('#Position').val();
return obj;
});
}
如果未选择任何一个下拉列表值,如何停止进行AJAX调用。我试过了e.stopPropagation();
但它没有用,任何帮助都表示赞赏。
答案 0 :(得分:2)
我不知道在obj
内分配each
的逻辑是什么。但看起来你需要这个:
$('#btnCreate').click(function (e) {
if ($(this).hasClass('Create')) {
Action = 'Create';
}
if ($(this).hasClass('Create')) {
Action = 'Update'
}
var obj = null;
switch(Action) {
case x:
obj = GetFirstFunction();
break;
case y:
obj = GetSecondFunction();
break;
}
if (obj != null) {
$.ajax({
// Something here
});
}
});
function GetFirstFunction(){
var obj = new Object();
$('.dlist').each(function (e) {
if ($(this).val() == '') {
alert('Please select all the dropdowns');
obj = null;
return false;
}
obj.Id=$('#Id').val();
obj.Dept=$('#Dept').val();
obj.Position=$('#Position').val();
});
return obj;
}
答案 1 :(得分:0)
这是基本的控制流程。这里的想法是:如果它匹配这个或那个条件,继续。否则,停止。
最小侵入性干预将是:
// ...
var valid = true;
switch(Action) {
case x:
valid = GetFirstFunction();
break;
case y:
valid = GetSecondFunction();
break;
default:
return;
}
if (valid) {
$.ajax({
// Something here
});
}
// ...
然而这缺乏可读性,并且可能在几年内变得难以维护。以下看起来更清晰,并将所有逻辑保存在一个地方:
var object;
var Action = null; // start with nothing
if ($(this).hasClass('Create')) {
Action = 'Create';
object = GetFirstFunction();
} else if ($(this).hasClass('Update')) {
Action = 'Update'
GetSecondFunction();
}
if (Action) {
$.ajax({
//passing here all the required things to make a call
data:object,
//something
});
}