如何在javascript事件中的前2个字符后删除表单文本框中的第一个零?

时间:2019-05-24 02:57:19

标签: javascript jquery

我要确保ID为input_1_4的表单文本框具有正确的电话格式。为此,每次用户在文本框字段中输入数字时,脚本都需要消除前4个字符内的第一个零。

这是我的JQUERY功能。我应该怎样实现自己的目标?

jQuery('#input_1_4').change(function() {


        }
    });
});

如果用户输入+408765432,该脚本将删除零,因为它在前4个字符内。预期结果必须为+48765432。

如果用户输入+4508765432,则结果必须为+458765432,因为它也在前4个字符之内。

但是,如果用户输入+4560876543-零将不会被删除,因为它已经是第5个字符。预期的结果是相同的:+4560876543

3 个答案:

答案 0 :(得分:0)

也许最简单的方法是先截取前四个字符并替换为零,然后将其余的字符串合并在一起:

function removeZero(s) {
    return s.slice(0,4).replace('0', '') + s.slice(4,)
}

let s1 = "+4560876543"
let s2 = "+408765432"
let s3 = "4508765432"
 
console.log(removeZero(s1))
console.log(removeZero(s2))
console.log(removeZero(s3))

// only removes the first zero
console.log(removeZero("4008765432"))

另一种选择是使用纯正则表达式,认为这很难调试和阅读:

function removeZero(s) {
    return s.replace(/(^[^0]{0,3})0/, '$1') 
}
console.log("+4560876543 => ", removeZero('+4560876543'))
console.log("460876543 => ", removeZero('460876543'))
console.log("0460876543 => ", removeZero('0460876543'))
console.log("+40560876543 => ", removeZero('40560876543'))

答案 1 :(得分:0)

尝试一下:

jQuery('#input_1_4').change(function() {
        jQuery('#input_1_4').val(jQuery('#input_1_4').val().substring(0,4).replace("0", "")+jQuery('#input_1_4').val().substring(4))

        }
    });
});

注意:我使用jQuery的次数不多,我也不知道它甚至可以正常运行,但是希望这可以使您对如何做有一个认识:
1.获取表格的值2.获取表格的前四位数字(子字符串)3.用空字符替换全0(使用regex并替换)4.重新添加其余数字并设置文本的值领域。
希望这会有所帮助!

答案 2 :(得分:0)

您可以尝试

     var myinput = "+40150544";
     function removeit (input) {
            var arr =  input.split('');
                 arr.map((x,i)=> { i<4 && x==0 ? arr.splice(i,1)  : x})
                      return arr.join('');
            };
            removeitit(myinput)