如何在插入某个数字后放入破折号

时间:2017-04-27 02:50:10

标签: javascript jquery html

这是html代码:



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="telnumber" maxlength="20" />

<script>
    $('.telnumber').keyup(function() {
        foo = $(this).val().split("-").join(""); // remove hyphens
        foo = foo.match(new RegExp('.{1,2}$|.{1,2}$|.{1,6}', 'g')).join("-");
        $(this).val(foo);
    });
</script>
&#13;
&#13;
&#13;

我希望我的输出像528228-25-5258

2 个答案:

答案 0 :(得分:0)

因此,对于以下解决方案,需要了解一些关键点。

  • 首先,我将事件更改为oninput,以便只要文本框上的输入发生更改,事件就会触发,而不是在提升键时。

  • 其次,我没有使用正则表达式,而是根据旧的字符串创建了一个新的字符串,如果字符串足够长(根据您的规范,则为6或8个字符),我们会在字符串上插入短划线

  • 第三,我们将输入拆分为数组,然后在必要时插入连字符后再次加入。

以下是解决方案: https://codepen.io/SammyIsra/pen/bWgWZq

答案 1 :(得分:0)

您可以将pattern属性与RegExp \d{6}-\d{2}-\d{4}匹配,以匹配六位数字,然后是短划线"-",后跟两位数字,然后是短划线"-",后跟四位数字数字; maxlength应设置为14而不是20;将placeholder设置为预期.value 999999-99-9999;使用input事件检查this.validity.patternMismatch,如果false,则将<input type="text">设置为disabled,在<input type="reset">显示同级元素click事件<input type="text"> .value设置为空字符串""。利用设置为<label> for的{​​{1}}属性的相邻id元素向用户显示通知。

&#13;
&#13;
<input type="text">
&#13;
&#13;
&#13;