函数返回不起作用
问题描述:
在下面的函数中,如果data = 0或空值,我想返回false,否则返回true - 对于一个输入字段,它的工作原理。函数返回不起作用
但是,如果我有两个输入class="myclass_1"
和一个有价值和其他输入没有一个值,它不会按预期工作。使用$('body').delegate('.submit', 'click',...
当我alert(searchResult)
输出为true即使一个栏位是空
var searchResult = false;
var search = function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'myURL',
data: myData,
async: false,
success: function(data) {
if (data == '0') {
searchResult = false;
} else {
searchResult = true;
}
}
});
};
$('.myclass_1').live('keyup change', search);
$('body').delegate('.submit', 'click', function(e) {
var passed = true;
alert(searchResult)// this output is true
if (!(searchResult && passed)) { // <-- NOTICE THIS
$('#loadingDiv, #overlay').hide();
return false;
}
});
答
希望能
在点击表单按钮我明白你的问题:
你没确定如果有空输入,当最后的ajax调用成功时(不返回0),searchResult将为真。
您可以将ajax-calls的成功s的数据属性为每一个输入,这样你就可以检查是否所有输入的最后AJAX调用是全成:
jQuery(
function($)
{
var search =
function(e)
{
e.preventDefault();
var target=$(e.target);
if(!target.val()
||
(target.data('oldValue') && target.data('oldValue')==target.val()
)
)
{
//return here, no need for a request if
// the value hasn't change or is empty
return;
}
target.data('oldValue',target.val());
//reset data-result for the given input
target.data('result',0);
$.ajax({
type: 'POST',
url: 'url',
data: myData,
async: false,
success: function(data) {
if (data == '0') {
target.data('result',0);
} else {
target.data('result',1);
}
}
});
};
$('.myclass_1').live('keyup change', search);
$('body')
.delegate('.submit',
'click',
function(e)
{
var inputs=$('.myclass_1'),
passed=true,
searchResult=(
inputs
.length
===
inputs.filter(function()
{
return($(this).data('result')===1);
})
.length
);
//searchResult will be false if data-result isn't set to 1 in all inputs
if (!(searchResult && passed)) {
$('#loadingDiv, #overlay').hide();
return false;
}
return true;
});
}
);
我试图读取你的问题,理解它,但我不能。尝试重写它,以便它不是一个单句... – Guffa
OMG请证明看你的问题,它几乎是英语。 – ubiquibacon
可能重复[为什么返回功能不同点击后](http://*.com/questions/8282009/why-is-return-function-different-after-click) –