【问题标题】:jquery Change input mask template based on value lengthjquery根据值长度更改输入掩码模板
【发布时间】: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

谢谢!

【问题讨论】:

    标签: javascript jquery validation user-interface input


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2016-05-09
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多