我有一个表格,通过Ajax发送。首先,它检查是否所有输入都被填充(如果没有,应用样式,msg()
函数使错误出现),如果它们被填充,则存储数据并通过Ajax发送:
$(document).on('click','.accepEditedData',function(){
obj=$(this);
sectionEdit=obj.attr('data-section');
newInputs=$('input[data-sectionC='+sectionEdit+']');
newInputs.each(function(){
if ($(this).val() === ""){
msg('error','Por favor, rellena todos los campos, o cancela la edición de tu información.');
$(this).css('border-bottom','2px solid red').css('color','red');
return false;
}
else{
if(obj.hasClass('updateInfoBasic')){
name=$("input[name='us_name']").val();
tlf=$("input[name='us_tlf']").val();
mail=$("input[name='us_mail']").val();
$.post('../actions/updateInfoBasic.php',{us_name:name, us_mail:mail,us_tlf:tlf}).success(
function(){
msg("success","Tu información básica ha sido actualizada");
});
}
}
});
});
我有下一个问题:ELSE语句对存储在newInputs
变量上的每个元素运行一次。
当第一个IF语句检查3个输入时,ELSE语句运行3次(包括它的ajax调用和它的msg('success','...');
函数。同样的情况发生在4,6等...总输入是检查槽.each
,执行ELSE的总次数。
理论上,如果所有输入都被填充,则ELSE语句应该只运行一次。
答案 0 :(得分:0)
尝试使用var
,Array.prototype.some()
$(document).on('click','.accepEditedData',function() {
var obj = $(this);
var sectionEdit = obj.attr('data-section');
var newInputs = $('input[data-sectionC='+sectionEdit+']');
var check = newInputs.get().some(function(el, i) {
return el.value === ""
});
if (check) {
msg('error','Por favor, rellena todos los campos, o cancela la edición de tu información.');
newInputs.filter(function() {
return this.value === ""
}).css('border-bottom','2px solid red').css('color','red');
} else {
if (obj.hasClass('updateInfoBasic')) {
var name = $("input[name='us_name']").val();
var tlf = $("input[name='us_tlf']").val();
var mail = $("input[name='us_mail']").val();
$.post('../actions/updateInfoBasic.php',{us_name:name, us_mail:mail,us_tlf:tlf})
.then(function success() {
msg("success","Tu información básica ha sido actualizada");
}, function error(jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
});
}
}
});