我正在检查一些有关模糊的文本框,有些需要针对相同的标准进行检查,所以我将这些全部放在一个模糊功能中。我注意到我的页面似乎很慢并且在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
函数会更好吗?还是有另一种方式?我真的不想为每个文本框写一个模糊函数。
有什么建议吗?感谢。
答案 0 :(得分:2)
我试用了你的代码,并没有显示任何缓慢的迹象,并且根本没有错误消息,甚至在错误控制台中都没有。
以下是代码中的一些建议更改,使用单个函数设置状态而不是两个,使用jQuery创建元素而不是粘贴HTML代码,避免 if-true-then-true-else验证函数中的-false 反模式: