2014-02-26 59 views
0

我正在使用jQuery Masked Input PluginjQuery Validation Plugin。當表單的字段失去焦點時,jQuery驗證插件會顯示一條消息,但這不會發生在綁定到遮罩的字段上,這可能是因爲模糊事件發生並驗證該字段不是空的,實際上該字段被填充與面具。jQuery屏蔽輸入 - 是否有可能檢索掩碼?

所以我重寫了驗證插件的required method以便驗證掩碼。由於我有電話蒙版,我不能硬編碼一個蒙版,我必須在插件中調用一個方法,它返回綁定到該字段的蒙版。我沒有找到蒙面輸入插件的文檔,沒有人遇到我的問題。

有誰知道是否有一種方法,返回我的面具本身綁定到該字段?

+0

你的代碼在哪裏? – Sparky

+0

@Sparky我的問題不在於驗證插件,實際上,我寫的方法對硬編碼掩碼工作得很好。 –

+0

沒關係。在這裏發佈一個簡潔的代碼示例對其他人來說是有益的。 – Sparky

回答

1

我用手機領域的一個蒙面輸入並確認有存在的電話號碼與minlength像這樣:

...

phone: { 
    required: true, 
    minlength: 17 
}, 

我的面具是這樣的:

+1(XXX)XXX-XXXX

+0

但是這樣我就不得不爲系統中的每個字段添加一條規則,除此之外,我還有其他輸入被屏蔽,但這是一個可能的解決方案。 –

0

鑑於插件(jQuery Masked Input Plugin)的構建方式Tom阿諾的方法是要走的路。

如果輸入大小隻能具有與掩碼相同數量的字符。

我建議這個方法:

互補插件

(function($) { 
$.fn.extend({ 

     mask2: function(mask, settings){ 
      //store in data 
      this.data('data-mask',mask); 
      this.data('data-maskLength', mask.length); 

      //add data attributes as html markups (optional) 
      this.attr('data-mask',mask); 
      this.attr('data-maskLength', mask.length); 

      // add validator rule (see section add custom method; i haven't test it yet you can remove it if necessary) 

      $("#myinput").rules("add", { 
       maskRule: true 

      }); 

      // add original mask plugin 
      return this.mask(mask, settings); 
     } 
});  
})(jQuery); 

現在不是使用面膜使用掩碼2

$("#date").mask2("99/99/9999"); 

添加自定義的驗證方法

最簡單的方法是使用data-maskLength鍵,(你可能需要把這個頂部):

jQuery.validator.addMethod("maskRule", function(value, element, params) { 

    return value.length == element.data("data-maskLength"); 
} 

我還沒有測試驗證方法,但至少你可以檢索麪罩或它的長度

你可以看到我做了什麼JsFiddle