2012-06-21 74 views
0

我下執行如下jQuery腳本:正則表達式不是在jQuery的工作表單驗證

<html> 
<head> 

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#textThing").blur(function(){ 
    var isNumber = $("#textThing").val().match(/^\d+/); 

    $("#p2").html(isNumber); 
    }); 
}); 

</script> 

</head> 

<body> 
<input type="text" id="textThing" /> 
<p id="p2">Paragraph 2</p> 
</body> 
</html> 

的問題是,P2從來沒有給我任何東西,當我取消輸入。我做錯了什麼?

+0

#Folio是用於選擇器?? –

+0

哦,複製錯誤。 – rdelfin

回答

1

你需要說:而不是

$("#p2").html(isNumber == null ? "" : isNumber[0]); 

$("#p2").html(isNumber); 

...因爲如果匹配,.match()會返回一個數組。在這裏看到:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/match

這裏有一個工作版本:http://jsfiddle.net/k45Ka/5/

+0

嘗試輸入非數字,總是返回數組,如果有匹配,如果不是,則返回null,所以你的小提琴會拋出錯誤 – charlietfl

+0

好的選擇,只是如果你不不輸入任何內容,它不會顯示新的結果。爲什麼? – rdelfin

+0

@charlietfl,對。很抱歉誤會。但邏輯起作用。 –

0

沒有創建任何文本值就擺在測試是否通過或失敗

DEMO http://jsfiddle.net/9MJNj/

$("#p2").html(isNumber ? 'Is number':'Is not'); 
+0

那麼,正則表達式返回布爾值? – rdelfin

+0

返回數組如果匹配,則返回null如果不匹配,則不完全是布爾值,但可以用作if/else。不是100%確定你想在文本中想要什麼,假設這是驗證錯誤的用戶 – charlietfl

1

工作演示http://jsfiddle.net/r4VPZ/3/http://jsfiddle.net/r4VPZ/4/

你可以在上面看到.match交代。

您還可以使用.toString.html.text api。你可以做一個null處理或可考慮isNaNhttp://www.w3schools.com/jsref/jsref_isnan.asp

希望它能幫助,請讓我知道如果我錯過了什麼,歡呼聲:)

良好讀取:http://api.jquery.com/html/&http://api.jquery.com/text/

Match:這是什麼.match回報:learning regex and jquery - what does .match return?

代碼

$(document).ready(function(){ 
    $("#textThing").on("blur",function(){ 
    var isNumber = $("#textThing").val().match(/^\d+/); 

    $("#p2").html(isNumber.toString()); 
    // $("#p2").text(isNumber); 
    }); 
}); 

//var folioIsNumResult = $("#Folio").val().match(/^\d+/i);​​ 
1

演示:當正則表達式不匹配http://jsfiddle.net/epinapala/TbCfc/

比賽返回null!

$(document).ready(function(){ 
    $("#textThing").blur(function(){ 
    var isNumber = $(this).val().match(/^\d+/); 
     if(isNumber == null){ 
      var res = "not a number" 
       }else{ 
       var res = "valid number"; 
       } 
    $("#p2").html(res); 
    }); 
});