如果length大于x,则jquery在字符之间添加短划线

时间:2017-06-08 03:26:02

标签: javascript jquery

我正在尝试按用户键入格式化美国邮政编码,如果用户输入的数量超过5,则需要在第5个和第6个字符之间添加短划线,以便邮政编码格式化为

55555或55555-5555

我现在添加了一个短划线,但无论是否添加了第6个数字

//zip code formatting
$(".zip-val").keyup(function() {
    if($(this).val().length == 5) {
        $(this).val($(this).val() + "-");
    }
});

4 个答案:

答案 0 :(得分:2)

这个怎么样?

//zip code formatting
$(".zip-val").keyup(function() {
    zipcode = $(this).val();
    zipcode = zipcode.replace(/-/g, '');      // remove all occurrences of '-'

    if(zipcode.length > 5) {
        $(this).val(zipcode.substring(0, 5) + "-" + zipcode.substring(5));
    }
});

答案 1 :(得分:2)

可以试试这个,拆分它并保留数字组,然后用格式重新创建字符串。如果您不在5组中,这甚至会删除-

您也可以将其修改为适合信用卡号码系统。

//zip code formatting
$(".zip-val").keyup(function() {
    let val = $(this).val();
    if(val.length > 5) {
        let digits = val.split(/(\d{1,5})/);
        let str = "";
        for (let group of digits)
        {
          if (/^\d+$/.test(group))
          {
            str += group + "-";
          }
        }
        str = str.substring(0, str.length - 1);
        $(this).val(str);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="zip-val" />

答案 2 :(得分:1)

您应该检查length是否为6。此外,您可以添加更多检查,如果用户在第6个字符上使用退格,它也会删除' - '字符

$(".zip-val").keyup(function(e) {
    if(e.keyCode == 8)
    {
        if($(this).val().length == 6){
        var newText = $(this).val().substring(0 , 5);
        $(this).val(newText);
      }
    }
    else if($(this).val().length == 6) {
        var newText = $(this).val().substring(0 , 5) + '-' + $(this).val().substring(5);
        $(this).val(newText);
    }
});

演示:https://jsfiddle.net/sn5ghvb8/

答案 3 :(得分:0)

你可以试试这个。

$(".zip-val").keyup(function() {
    if($(this).val().length > 5 ) {
        res = $(this).val().split("");//convert string to array
       if(jQuery.inArray( "-", res )){//checks if dash exist
       for (var i=res.length-1; i>=0; i--) {//removes dashes
          if (res[i] === '-') {
              res.splice(i, 1);
              }
            }
            res.splice(5, 0, "-");    
        }
        $(this).val(res.join(''));
    }
});