ELSE语句每个“.each”元素运行一次

时间:2015-05-10 16:18:37

标签: jquery

我有一个表格,通过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语句应该只运行一次。

1 个答案:

答案 0 :(得分:0)

尝试使用varArray.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);
         });
        }
    }
});
相关问题