jquery对多个模糊函数的过多递归

时间:2011-02-14 01:00:36

标签: jquery

我正在检查一些有关模糊的文本框,有些需要针对相同的标准进行检查,所以我将这些全部放在一个模糊功能中。我注意到我的页面似乎很慢并且在firebug中我一直在犯错误too much recursion

我的代码在下面,它检查文本框,然后将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 个答案:

答案 0 :(得分:2)

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

http://jsfiddle.net/5sFWF/

以下是代码中的一些建议更改,使用单个函数设置状态而不是两个,使用jQuery创建元素而不是粘贴HTML代码,避免 if-true-then-true-else验证函数中的-false 反模式:

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