在电话号码字段值附加+1

时间:2016-11-10 16:41:35

标签: javascript jquery html forms

我需要正确格式化我的电话号码字段,我几乎完成了它。

我能够使用此脚本在电话号码中添加破折号,但我怎样才能添加" + 1"键入所有10个号码后到电话号码的前面?

$('#tel').keyup(function(){
    $(this).val($(this).val().replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
});

2 个答案:

答案 0 :(得分:3)

当数字为十位数或更多时,您可以使用回调添加.myelement { /* some styling #1 */ /* note: no hover state here */ } @media(hover: hover) { .myelement { /* some styling that override #1 styling in case this browser suppot the hover*/ } .myelement:hover { /* what to do when hover */ } } ,并在十位数以下时删除前缀和连字符等



    $(".Wrapper").on("click", ".testDivs", function () {
        var thisTop = $(this).position().top;
        $(".testDivs").each(function(i, obj) {
            var otherTop = $(obj).position().top;
            if(thisTop < otherTop){
                $(".fullWidthDiv").insertBefore(obj);
                return;
            }
        });
    });
&#13;
+1
&#13;
&#13;
&#13;

答案 1 :(得分:2)

如果可能的话,我建议您将keyup事件替换为input(其中IE 10+ support)。接下来,您应该重新设置过滤器以获得真正的数值。然后对你的正则表达式。在我的例子中,我用短划线分隔值替换了非10位数字,修剪了任何结果的尾随破折号,并用相同的值替换了一个完整的10位数值,并在开头用+1替换。

$('#tel').on('input', function(){
    var filteredValue = this.value.replace('+1 ', '').match(/\d*/g).join('');
    $(this).val(filteredValue
      .replace(/(\d{0,3})\-?(\d{0,3})\-?(\d{0,4}).*/,'$1-$2-$3')
      .replace(/\-+$/, '')
      .replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'+1 $1-$2-$3'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id=tel>

这是一个更接近原版的简化版本,仅在10位数字的末尾进行替换。

$('#tel').on('input', function(){
    var filteredValue = this.value.replace('+1 ', '').match(/\d*/g).join('');
    $(this).val(filteredValue
      .replace(/(\d{3})\-?(\d{3})\-?(\d{4}).*/,'+1 $1-$2-$3'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id=tel>