2016-06-08 54 views
0

JSP:爲什麼我的easyUI驗證器無效?

<li id="osDriverLic" style="Display: none"><label><spring:message 
          code="MESS_License" />:</label> <input 
        type="text" class="easyui-validatebox" id="driverLicNew" 
        name="Driverlicense" 
        data-options="validType:['alphanumeric']" /></li> 

的JavaScript:

function doValidate(){ 

    $.extend($.fn.validatebox.defaults.rules, { 
     equals: { 
      validator: function(value,param){ 
       return value == $(param[0]).val(); 
      }, 
      message: 'Fields do not match.' 
     }, 
     emailAddress: { 
      validator: function(value,param){ 
       var myReg=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
       var emails = value.split(";") 
       for(var i=0;i<emails.length;i++){ 
        console.log(emails[i]); 
        if(emails[i] != null && emails[i] != ''){ 
         if(!myReg.test(emails[i])){ 
          return false; 
         }else{ 
          continue; 
         } 
        } 
       } 
       return true; 
      }, 
      message: 'Please enter a valid email address.' 
     }, 
     //here is my custom validator 
     alphanumeric: { 
      validator: function(value,param){ 
      console.log("come here"); // anyway it has no log in console here.. 
     var reg= /^(?!([a-zA-Z]+|\d+)$)[a-zA-Z\d]{1,10}$/; 
     console.log("come here 2"); // no log, too. 
      return reg.test(value); 
     }, 
      message: 'Please enter a valid alphanumeric combination with 1–10 characters.' 
     } 
}); 
     $("#editAccountForm .easyui-validatebox").each(function() { 
      $(this).validatebox('validate'); 
     }); 
    } 

這可能是沒有錯我的代碼,因爲當我改變 validType:['alphanumeric']validType:['emailAddress'], 它進入驗證。但現在,它在這裏沒有任何效果。那麼我的js代碼有什麼問題?

順便說一句,如果我需要,它驗證到:

(1)字母數字組合,它同時包含字母和數字。

(2)和長度在[1,10]中,如何編寫RegExp?我試了代碼

var myReg=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

但我不確定是否正確。

回答

0

在javascript中,變量VReg應該命名爲mReg,並且可以用作mReg.test(...)。沒有reg變量可以測試,所以JavaScript代碼片段會出錯?

一個正則表達式匹配2至10個字母數字含有至少1個字母和1號:

/^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{1,10}$/ 

這將匹配:

123456789A 
abcdefgHI0 
a0 

但不是:

abcdefghij 
1234567890 
abcdefgh123lm 
abc-012 

如果是關於驗證正則表達式的第一封電子郵件。 這一條可能更短:

/^[\w.-]+\@[\w.-]+\.[\w]{2,4}$/ 
+0

謝謝現在Luk.But我的問題是,它無法通過easyUI.Can的字母數字校驗的功能,去你告訴我,爲什麼我一直在爲期一週的工作的問題? .. – daxue

+0

有一個名爲VReg的變量,但您可以調用reg.test()。它不應該被命名爲mReg並用作mReg.test()嗎?如果這不起作用,那麼validType確實需要一個參數。然後使用類似於data-options =「validType:'字母數字[0]'」的方式調用它,即使您不使用該參數。我只是建議基於[本文檔](http://www.jeasyui.com/documentation/validatebox.php)。 – LukStorms

+0

對不起,Vreg是一個錯誤,我已經糾正它,但沒有用。然後我添加一個參數validType:'字母數字[0],似乎仍然沒有效果。 – daxue