2011-10-04 54 views
1

为什么在下面的代码不工作这部分if(!$(this).val()){...从代码和这种匹配是真实的与http://www.st,我想作为:http://stackoverflow.comUrl验证与jquery

例子:http://jsfiddle.net/gp9nL/3/

$('.url').keyup(function(){ 
    if (!$(this).val().match(/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/)){ 
     $(this).css("background", "#ffc4c4"); 
     result = false; 
    }else { 
     $(this).css("background", "#FFFFEC"); 
     result = true; 
    } 
    if(!$(this).val()){ 
     alert('field is empty') 
     $(this).css("background", "#FFFFEC"); 
    } 
    return result; 
}); 

回答

0

if(!$(this).val())

很可能无法工作,因为它是被称为上keyup

$('.url').keyup(function(){

因此,总是会有一些东西在input中,因为需要关键笔画来触发键控,它永远不会评估为空。

编辑

按照注释

有什么解决办法?

如果你想检查该字段为空,做focusout检查。

这里是你更新的代码:

$('.url').focusout(function(){ 

    if(!$(this).val()){ 
     alert('field is empty') 
     $(this).css("background", "#FFFFEC"); 
    }   
}); 

而且你的提琴更新:http://jsfiddle.net/gp9nL/4/

+0

有什么解决办法? –

+0

看到这里,在这里工作,但!!?:http://jsfiddle.net/gp9nL/2/ –

+0

我已经用解决方案更新了答案,@艾丽西卡·希伯里 –