2011-10-04 51 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

我已經用解決方案更新了答案,@艾麗西卡·希伯裏 –