jQuery 动态遮罩

jQuery Dynamic Masking

我在我的应用程序中使用了 jQuery 屏蔽插件。

Link这里给出。

https://github.com/digitalBush/jquery.maskedinput

我需要像这样的动态遮罩。

有时候我需要这样使用 000-00-0 0000000-00-0

假设我写 50000 那么它就会变成 50-00-0

假设我写 500000 那么它将变成 500-00-0

所以我的第一部分将包含 1 到 7 个不同的数字。

那么我该怎么做。

我正在使用的简单掩码如下所示。

$("input[name='mask']").mask("9999999-99-9");

解决方案

var my_condition = true;
    $("input[name='mask']").on('click focus', function(){ 
       $("input[name='mask']").unmask();
       my_condition = true;
    });  
    $("input[name='mask']").on('change paste', function() {
        var len = $(this).val().length;
            if(my_condition) {
             switch(len) {
                 case 5:
                     $("input[name='mask']").mask('99-99-9');
                     break;
                 case 6:
                     $("input[name='mask']").mask('999-99-9');
                     break;
                 case 7:
                     $("input[name='mask']").mask('9999-99-9');
                     break;
                 case 8:
                     $("input[name='mask']").mask('99999-99-9');
                     break;
                 case 9:
                     $("input[name='mask']").mask('999999-99-9');
                     break;
                 case 10:
                     $("input[name='mask']").mask('9999999-99-9');
                     break;
                 default:
                      $("input[name='mask']").mask('9999');   
             }
             my_condition = false;
         }
    });

谢谢

我写了一个简单的 JSFiddle 来演示我将如何解决这个问题。

这是我的 JS 代码:

$("#input").change(function(){
 var len = $(this).val().length;


if(len == 4)
    $(this).mask('99-99');
else if (len == 5)
  $(this).mask('999-99');
else if (len == 6)
  $(this).mask('9-99999');
})

$("#input").focus(function(){
 var val = $(this).val().replace("-",""); //remove the dashes from the old masked value
 $(this).mask("9999999999"); //set to maximum length
 $(this).val(val);
})

.mask() 的问题在于它为输入字段设置了最大长度,这意味着如果设置掩码 "99-99",则不能在输入中写入超过 4 位数字field.My 解决方案是在输入获得焦点时将掩码设置为 "9999999999",然后在更改值后设置适当的掩码。您必须更改 change()(偶然的双关语)事件以满足您的需要。

实现缺陷:用户在键入时看不到掩码