【问题标题】:JS function with jquery always return undefined带有jquery的JS函数总是返回未定义
【发布时间】:2016-07-26 15:36:30
【问题描述】:

我正在使用 Jquery 构建一个 Js 函数,以检查某些输入是否为空或不进行验证。这是检查输入是否为空的函数:

   function isValid(elements){
      var validation = false
      elements.each(function() {
        if ($( this ).val().length > 0){
          validation = true
        }
        else {
          validation
        }
      });
      validation
    }

但是无论我做什么,我的函数都会返回未定义的,而不是应该包含在验证变量中的布尔值?

我应该怎么做才能让我的函数返回 true 或 false ?

【问题讨论】:

  • 你为元素传递了什么?
  • 你根本没有从函数中返回任何东西。
  • 你认为validation行在做什么?你的逻辑也有问题。验证很可能没有按照您的意愿进行。
  • 确实,我以为我最后一次验证是返回我的布尔值,但现在我明白我需要使用 return

标签: javascript jquery return-value


【解决方案1】:

如果至少有一个元素为空,则可以返回 false,否则返回 true。

function isValid(elements){
  var validation = true;

  elements.each(function() {
    if ($( this ).val().trim().length === 0){
      validation = false;
    }
  });

  return validation;
}

【讨论】:

  • each 中返回 false 将充当中断语句
  • 您可能还想在长度检查中添加trim(),否则用空格填充该字段将是有效的
【解决方案2】:

您可以使用Array#some 执行如下代码,

function isValid(elements) {
 return !Array.from(elements).some(function(itm){ itm.value.trim().length == 0 });
}

您根本没有从函数中返回任何内容,这意味着将返回默认返回值undefined

【讨论】:

    【解决方案3】:

    您的函数 isValid() 正在返回 undefined,因为这是 JavaScript 中的预期行为:如果函数未指定一个返回值,undefined 是“默认”返回值,而您的函数 isValid() 没有任何返回.

    检查this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多