2012-02-23 58 views
0

我正在使用asp.net MVC2,我正在嘗試添加正則表達式來做一些驗證的表單... 這就是說,他們都沒有工作。 我做的第一件事就是嘗試做一個簡單的.blur函數調用。沒有工作,在所有...無法獲得正則表達式在jQuery中工作

$('#DischargeDateTimeMask').blur(function() {    
     var inputVal = $(this).val(); 
     var dateReg = /^(1[012]|0[1-9]):[0-5][0-9](\\s)? (am|pm)$/; 
     if (!characterReg.test(inputVal)) { 
      //$(this).after('<span class="error error-keyup-4">Incorrect time format fool!: HH:mm am|pm</span>'); 
     alert(dateReg.test(input)); 
     } 
    });​ 

我只是想測試一下,看看是否我正則表達式是一無所獲,顯然它是拋出某種錯誤。所以我說,螺釘和我決定嘗試和增加額外的方法對jQuery驗證...我的失敗就是下面的文件...

$.validator.addMethod(
     "time", 
     function(value, element){ 
      /^(1[012]|0[1-9]):[0-5][0-9](\\s)? (am|pm)$/.test(value); 
     }, 
     "The time format is invalid" 
    ); 
$("#temp1").validate({ 
     rules: { 
DischargeDateTimeMask: { 
       time: true, 
       required: false 
      } 
     }, 
     messages: { 
     } 
    }); 
}); 

忽略的一些代碼,其餘的...我有其他驗證規則在那裏工作(當我擺脫這個代碼),但是沒有關係。我究竟做錯了什麼?看起來好像所有東西都在這裏起起落落?我錯過了一些簡單的東西嗎

+1

我不知道的jQuery插件驗證,但我猜你應該真正'return' '.test'結果。像「return/^ ...」這樣的東西可能會起作用。 – pimvdb 2012-02-23 16:05:50

回答

1

首先,您將希望讓您的方法檢查是否設置了要求,否則即使設置了required: false,它也會始終檢查您的正則表達式。所以你的新方法的第一行應該是這樣的:

if (this.optional(element)){ return true;} 

正如其他人指出的,你需要返回結果。我也認爲你的正則表達式與空格部分是有一點關係的,我只是把它做成\s?,除非我錯過了一些東西。

所以你總函數應該是這樣的:

$.validator.addMethod(
    "time", 
    function(value, element){ 
     if (this.optional(element)){ return true;} 

     return /^(1[012]|0[1-9]):[0-5][0-9](\\s)? (am|pm)$/.test(value); 
    }, 
    "The time format is invalid" 
); 

這是工作:http://jsfiddle.net/ryleyb/w7EAV/

+0

很棒的回答。我最終自己得出了這個結論。既然你說得比我好多了,我會給你答案的。 – SoftwareSavant 2012-02-24 12:16:53

0

Aparently ...

$('#DischargeDateTimeMask').blur(function() { 
     var inputVal = $(this).val(); 
     var dateReg = /^(1[012]|0[1-9]):[0-5][0-9](\\s)? (am|pm)+$/; 
     if (!characterReg.test(inputVal)) { 
      $(this).after('<span class="error error-keyup-4">Incorrect time format fool!: HH:mm am|pm</span>'); 
     } 
     //alert(dateReg.test(inputVal)); 
    }); 

這工作,但不是我以前一樣。它看起來完全像我以前的東西,但無論如何。但有了這種經驗,我決定試着讓驗證工作......顯然以前我曾工作過,我的代碼中有其他地方出現錯誤。謝謝你們的幫助。

相關問題