在下面的函数中,如果data = 0或为空,我想返回false,否则返回true - 对于一个输入字段,它会工作。
但是,如果我有两个输入class="myclass_1"
且一个输入有值,而其他输入没有值,则无法按预期工作。
当我$('body').delegate('.submit', 'click',...
输出为真时,点击表单中的按钮,即使一个字段为空
alert(searchResult)
答案 0 :(得分:0)
希望我理解你的问题:
你没有确定是否有空输入,当最后一次ajax-call成功时,searchResult将为真(没有返回0)
您可以将ajax-calls的成功存储为每个输入的数据属性,这样您就可以检查所有输入的最后一次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;
});
}
);