【问题标题】:jQuery - returning control during loopjQuery - 在循环期间返回控制
【发布时间】:2010-08-11 14:44:44
【问题描述】:

我是 jQuery 的新手(通常是真正的 javascript),我正在尝试编写一个通用函数来检查页面上的所有文本并选择输入框,如果页面上的一个或多个框包含,则返回“true”至少一个字符,如果不是,则为“假”(如果没有输入,则用于禁用搜索按钮)。我写了以下函数:

    function hasUserProvidedInput() {
        $('input[type="text"]').each(function() {

            if ($(this).val() != '') {
                alert("he has");
                return true;
            }
        });
        $('select').each(function() {
            if ($(this).val() != '') {
                return true;
            }


        });

      return false;  
   }

其意图是它会遍历页面上的所有文本框和选择框,第二个它通过输入点击一个,它将控制权返回给调用函数,值为“真”(我用 keyup 调用该函数附加到文本框和页面上的选择框的事件)。如果它遍历页面上的所有这些控件并且没有找到具有输入的控件,它将返回 false。

我出于调试目的添加了警报。警报可以正常工作以指示文本框何时包含输入,但是我的函数始终返回值“false”。谁能告诉我为什么会发生这种情况/我该如何解决?谢谢。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    在您检查输入的 val() 时,您处于匿名函数的范围内。当您从仅从该函数返回的这两个匿名函数之一中返回一个值时,而不是您的整体 hasUserProvidedInput 函数。因此,本质上,您在匿名函数中的“返回真”语句将被丢弃。

    试试这样的:

     function hasUserProvidedInput() {
            var returnValue = false;
            $('input[type="text"],select').each(function() {
                if ($(this).val() != '') {
                    returnValue = true;
                }
            });
    
          alert(returnValue);
          return returnValue;  
     }
    

    我把这段代码放在一个小提琴里,这样你就可以玩了:http://jsfiddle.net/tddmp/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      相关资源
      最近更新 更多