2014-02-26 55 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