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

时间:2017-04-26 06:57:30

标签: javascript jquery validation user-interface input


我无法弄清楚如何根据值长度更改输入模板掩码。

例如:我有两个车号模板' 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 个答案:

答案 0 :(得分:2)

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

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