2011-02-14 78 views
1

我正在检查模糊上的一些文本框,有些需要根据相同的critera进行检查,因此我将这些全部放在一个模糊函数中。我注意到我的页面看起来很慢,在萤火虫中,我一直在报错too much recursionjquery在多个模糊函数上递归太多

我的代码如下,它检查文本框,然后将ID发送到另一个函数,该函数添加一个类来说明它是否有效。

$('#username, #customerName, #customerTown, #customerCounty, #contactName, #staffFirstname, #staffLastname, #staffTown, #staffCounty').blur(function() 
{ 
    var ID = $(this).attr('id'); 
     var val = $(this).val();      
     if(validate(val)) 
     { 
      valid(ID); 

     } 
     else 
     {    
      notValid(ID); 
     } 

}); 

function valid(elementID) 
{ 
      $('#'+elementID+'Img').html('<img src="../images/tick.png" alt="Valid" title="Valid" />'); 
      $('#' + elementID).addClass('valid'); 

} 

function notValid(elementID) 
{ 
      $('#'+elementID+'Img').html('<img src="../images/cross.png" alt="Not Valid" title="Not Valid" />'); 
      $('#' + elementID).removeClass('valid');      

} 

function validate(val) 
    { 
     var reg = new RegExp ("^([a-zA-Z ]){3,90}$"); 
     var regTest = reg.test(val); 
     if(regTest) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
} 

如果我为每个文本框做了单独的blur函数会更好吗?还是有另一种方式?我真的不想为每个文本框写一个模糊函数。

有什么建议吗?谢谢。

+1

你确定它的这个代码,导致缓慢和错误信息?我发现什么都不会很慢,也没有递归。 – Guffa 2011-02-14 01:23:06

+0

这基本上是我在我的页面上的所有代码,还有几个文本框被检查,但它的方式与上面相同。只有其他功能是一个onclick,但我得到错误之前,它被按下。谢谢。 – Elliott 2011-02-14 01:27:24

回答

2

我试了一下你的代码,它没有显示任何缓慢的迹象,并且根本没有错误信息,甚至在错误控制台中也没有。

http://jsfiddle.net/5sFWF/

下面是一些建议中的代码的变化,使用单个函数来设置状态,而不是两个,使用jQuery创建元素,而不是粘贴在一起的HTML代码,避免了如果真-然后-true,否则假反模式的验证功能:

http://jsfiddle.net/5sFWF/2/