【问题标题】:jQuery return not working as expectedjQuery返回没有按预期工作
【发布时间】:2013-05-17 10:14:17
【问题描述】:

以下函数正确验证空字段:

function empty_field(element){
    element.each(function(){
        if($(this).val() == ''){
            $(this).addClass('error');
        }
        else{
            $(this).removeClass('error');
            return true;
        }
    });
}

但是我想通过执行以下操作来检查验证是否完成:

        submit.click(function(e){
            e.preventDefault();

                            var input = $('.input');

            if(empty_field(input))//if the form is valid
            {
                console.log('form validated');
            }

        });

当我点击提交按钮时,表单得到验证,但控制台日志不起作用,这意味着条件可能是错误的。

有什么帮助吗?

【问题讨论】:

  • 您的意思是,如果该字段为空,则该表单有效?如果该字段不为空,您是否意味着使其有效。在这种情况下,否定条件语句。

标签: jquery return


【解决方案1】:

您的内部函数不会从外部函数返回。

您可以在 empty_field 函数的范围内修改一个变量。例如。

function empty_field(element){
   var valid = true;
   element.each(function(){
     if($(this).val() == ''){
        $(this).addClass('error');
        valid = false;
     }
     else{
        $(this).removeClass('error');
     }
   });
   return valid;
 }

【讨论】:

  • 另外:您的函数可能应该被称为fields_not_empty,并带有参数elements(复数)。其他人阅读您的代码时不会感到困惑。
【解决方案2】:

你没有从你的函数中返回任何东西,

function empty_field(element){
    var noError = false;
    element.each(function(){
        if($(this).val() == ''){
            $(this).addClass('error');
        }
        else{
            $(this).removeClass('error');
            noError = true;
            return false;  // to break the `.each()`
        }
    });
 return noError;
}

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 2018-03-17
    • 2019-07-13
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多