jquery根据值长度更改输入掩码模板

Posted

技术标签:

【中文标题】jquery根据值长度更改输入掩码模板【英文标题】:jquery Change input mask template based on value length 【发布时间】:2017-09-23 10:29:27 【问题描述】:

我无法弄清楚如何根据值长度更改输入模板掩码。 例如:我有两个车号模板“99-999-99”和“999-99-999”。我需要根据值长度更改输入掩码。 如果值长度为 7 或更小,则模板必须为“99-999-99”。如果值长度大于 7,则寺庙必须为 '999-99-999'。

我的代码:

$("#carnum").keyup(()=>
  var masks = ['99-999-99', '999-99-999'];
  var value = $('#carnum').val().replace(/-/g, '');
  value.length <= 7 ? -1 :  $('#carnum').mask(masks[1]);
)
$("#carnum").mask('99-999-99');

这里是fiddle。

谢谢!

【问题讨论】:

【参考方案1】:

在再次屏蔽同一元素之前,最好先取消屏蔽, 这是动态或有条件更改掩码的示例代码参考

var changeMask=0;
$("#carnum").keyup(()=>
    var masks = ['99-999-99', '999-99-999'];
  var value = $('#carnum').val().replace(/-/g, '').replace(/_/g,''); 
  if(value.length==7)
  changeMask++;
  
  if(changeMask>1&&value.length>=7) 
  $('#carnum').unmask(masks[0]); 
  $('#carnum').mask(masks[1]);
  var arrayValue=value.split("");
  $("#carnum").val("");
  for(var index=0;index<arrayValue.length;index++)
  $("#carnum").val(function(i, val) 
        return val + arrayValue[index];
    ).trigger('input');
   
  
)
$("#carnum").mask('99-999-99');

Working fiddle here

【讨论】:

以上是关于jquery根据值长度更改输入掩码模板的主要内容,如果未能解决你的问题,请参考以下文章

12 小时时间格式的 JQuery 输入掩码

通过作曲家包含时如何在 AdminLTE 中使用 jQuery 的输入掩码

想要使用 jquery 输入掩码插件在按钮单击 ipaddress 字段时验证用户

带有 r 闪亮 textInput 的 jQuery 掩码插件

应用 jQuery 掩码不支持 0 作为占位符的默认值

需要根据 jquery 中的文化具有日期掩码