2013-10-10 207 views
0

我在我的jQuery代码return有问题。我期待return一旦被触发就退出该功能,但相反,该功能会继续执行。我希望我不是唯一一个遇到这个问题的人,但是在搜索之后,我找不到解决我困境的答案。以下是我的功能:返回不工作在jquery

$(".myButtonClass").on("click", function() { 
    $(".myTextBoxClass").children('input').each(function() { 
     if ($(this).css('display') === "inline-block") { 
      var doLeave = confirm("Does the user want to move forward"); 

      if (!doLeave) { 
       return; 
      } 
     } 
    }); 
    document.vendorEdit.action = "newPage.asp"; 
    document.vendorEdit.submit(); 
}); 

我在做什么不正确的家伙?

回答

1

你有两个功能,并且你必须给这两个函数“返回false” 试试这个:

$(".myButtonClass").on("click", function() { 
     var valid = true; 
     $(".myTextBoxClass").children('input').each(function() { 
      if ($(this).css('display') === "inline-block") { 
       var doLeave = confirm("Does the user want to move forward"); 

       if (!doLeave) { 
        valid = false;  
        return false; 
       }    
      } 


     }); 

     if(!valid){ 
      return false; 
     }; 
     document.vendorEdit.action = "newPage.asp"; 
     document.vendorEdit.submit(); 
    }); 
+0

这就是它,我需要'return'后的'false'。我只是意识到我有两个功能。这是当你没有睡觉时会发生的事情。谢谢 :) –

0

您需要return false;退出.each循环。 return true;去下一个迭代。

0

您当前return声明导致each循环中断而不是从event handler返回。在使用return语句退出每个循环之前,在条件doLeave中设置标志,并使用flag从事件处理程序返回。

$(".myButtonClass").on("click", function() { 
    var flagToReturn = false; 
    $(".myTextBoxClass").children('input').each(function() { 
     if ($(this).css('display') === "inline-block") { 
      var doLeave = confirm("Does the user want to move forward"); 

      if (!doLeave) { 
       flagToReturn = true;  
       return; 
      }    
     } 
     if(flagToReturn) return; 

    }); 
    document.vendorEdit.action = "newPage.asp"; 
    document.vendorEdit.submit(); 
}); 
+0

但两者的回报都在里面'each' – Archer

+0

但每个循环都不会停止在'return'上执行。它继续前进。 –

0
$(".myButtonClass").on("click", function() { 
self= this ; 

    selft. flagToReturn = false; 
    $(".myTextBoxClass").children('input').each(function() { 
     if ($(this).css('display') === "inline-block") { 
      var doLeave = confirm("Does the user want to move forward"); 

      if (!doLeave) { 
       selft. flagToReturn = true;  
       return; 
      }    
     } 
     if(selft. flagToReturn) return; 

    }); 
    document.vendorEdit.action = "newPage.asp"; 
    document.vendorEdit.submit(); 
});