2011-07-27 92 views
0

我真的不知道爲什麼我的jQuery中的自定義規則無法正常工作。所有這一切都是在文本中尋找一個子字符串,如果它出現,它就是必需的,如果是,則不需要。我正在使用jQuery驗證庫。我希望它的一些簡單的...請幫助!jquery驗證 - 自定義規則 - 依賴回調

jQuery.noConflict(); 
(function($) { 
$(function() { 
    $("#frmUpdateCC").validate({ 
     errorContainer: "#updateProfileCC", 
     errorPlacement: function(error, element) {}, 
     rules: { 
      txtCardNo1: { 
       required: true, 
       creditcard: function() { 
        var str = $('#txtCardNo1').val(); 
     str = (str.indexOf("xxxxxx")); 
     return (str != 6); 
       } 
      } 
      cboMonth1: "required", 
      cboCard1: "required", 

     } 
    }); 
}); 
})(jQuery); 

伊夫使用!== 6試過,!=「6」,和其

回答

2

那麼,str.indexOf("xxxxxx")將返回字符串str"xxxxxx"的起始位置。

所以,如果str包含'xxxxxx',您的發言將只有'xxxxxx'開始爲6位。你的意思是測試str.length也許評估爲真?

否則,爲什麼不能簡單地做:

str = (str.indexOf("xxxxxx")); 
    return (str === -1); 
+0

我會給你一個嘗試...基本上我需要聲明評估爲false如果該聲明存在(在第六位或任何位置)....我試過-1,但我會給它另一個走。 – Ortal

+0

應該工作。如果找不到字符串,那麼indexOf將等於-1 ...因此,str === -1將返回true。如果找到「xxxxxx」,那麼indexOf將大於-1,所以str === -1將返回false。 – ProtectedVoid

+0

好的,我收到了,謝謝你的幫助 – Ortal

0

我想你想你的回調函數將被分配到「必需的」屬性其他變化,而不是「的信用卡「property:

required: function() { var str = .... } 

當前您已將所需屬性硬編碼爲true。

+0

不,我需要它只檢查信用卡屬性如果那些X不在那裏。它始終是必需的。 – Ortal

0

你要做這樣的

creditcard: function() { 
        var str = $('#txtCardNo1').val(); 
     str = (str.indexOf("xxxxxx")); 
     if (str > -1) {                 
          return true; 
         } 
         else {         
          return false; 
         } 
       } 

我認爲規則信用卡將只支持數字格式像NNN-nnn- nnn。所以我認爲你必須根據你的需要添加另一個規則,我的意思是定製規則