仅在输入数字时修剪最后一位数字。

时间:2017-04-17 06:04:33

标签: javascript

     applicantAddressZipCode.subscribe(function (newValue) {
    if (newValue != undefined && newValue != '') {

        applicantAddressZipCode(formatZipCode(newValue));
        var dataValue = String(applicantAddressZipCode().replace(/[^\/\d]/g, ''));
        if (dataValue > 9999999999999.99 || dataValue < 0) {
            applicantAddressZipCode('');
        }

        if (loading == false) {
            sendCommand('SAVE');
        }
    }
});



function formatZipCode(value) {

    value = value.replace(/[^\/\d]/g, '');
    var z = /(\d{5})-?(\d{4})/
    if (value != undefined && value != '') {
        return value = value.replace(z, "$1-$2")
    }


    else {
        return value;
    }
};

我已经为邮政编码输入创建了一个功能。如果用户输入12345-6789并且12-3456789也将导致12345-6789,则该功能完全正常。我的问题是当用户只输入1234567890这样的数字时,该功能将转到12345-67890。我想创建一个函数来修剪/切片最后一个数字,仅在用连字符输入的案例编号中。我将衷心感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

  1. 首先,您需要检查该号码是否包含连字符。使用这行代码来检查。如果输入数字中没有连字符,则连字符的索引将为-1。

    if(inputValue.indexOf('-') == -1){
        //input do not contain hyphen so remove the last character
    }
    
  2. 然后你需要调用另一个函数或代码来修剪你收到的输出中的最后一个字符12345-67890。

    tempOutput.slice(0,-1);
    //where tempOutput contains the temporary output 12345-67890
    

答案 1 :(得分:0)

您可以使用split()slice()删除字符串的最后一个元素:

function formatZipCode(value) {

  value = value.replace(/[^\/\d]/g, '');
  var z = /(\d{5})-?(\d{4})/
  if (value != undefined && value != '') {
    value = value.replace(z, "$1-$2");
    value = value.split('-');
    if (value[1].length >= 5) {
      return value = value[0] + "-" + value[1].slice(0, 4)
    }
  } else {
    return value;
  }
};

var zip = formatZipCode("1234567890");
console.log(zip);

答案 2 :(得分:0)

这将是另一种选择,因为邮政编码总是9位数字。

 if (value != undefined && value != '') {
        value = value.replace(z, "$1-$2")
        if(value.length>10){
          value = value.substring(0,10)
          return value
        }
    }