jQuery 掩码在最后一个数字前附加问号

jQuery mask appends question mark before last number

我正在尝试在 phone 输入中应用遮罩。我的 jQuery 版本是 1.11,我在下面的代码中使用 Masked Input Js。

尽管如此,面具还是在最后一个数字前添加了一个问号。可能是什么原因造成的?

  $.mask.definitions['~'] = "[+-]";
   
  $("#id_phone").focusout(function () {
    var phone, element;
    element = $(this);
    element.unmask();
    phone = element.val().replace(/\D/g, '');
    if (phone.length > 10) {
      element.mask("(99) 99999-999?9");
    } else {
      element.mask("(99) 9999-9999?9");
    }
  });

这是结果

你能展示你的 JS includes 和 html 吗? 我用igorescobar/jQuery-Mask-Plugin制作了一个phone面具,也许对你有帮助:

$(function(){
    $("#id_phone").on("change", function(){
        var phoneLength = 0;
        phoneLength = $(this).val().replace(/[^0-9]/g,"").length;
        console.log(phoneLength);
    if(phoneLength > 10){
        $(this).mask('(00) 00000-0000');
    }else{
        $(this).mask('(00) 0000-00000');
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.11/jquery.mask.min.js"></script>


<div class="control-group">
  <input type="text" name="phone" id="id_phone" value="" />
</div>