Javascript 如何在jQuery中设置没有插件的输入电话号码格式?

Javascript 如何在jQuery中设置没有插件的输入电话号码格式?,javascript,jquery,html,Javascript,Jquery,Html,我想在按键上格式化我的 “我的输入”字段的要求如下: 仅限数字,不含字母和其他特殊字符 使用美国编号格式化输入字段,如(123)457-7890 这是我当前的代码: jQuery("#phone_number").on("keypress", function(event) { var reg = /[0-9]/g; var key = String.fromCharCode(event.keyCode); if(!reg.test(key)){ //

我想在
按键上格式化我的

“我的输入”字段的要求如下:

  • 仅限数字,不含字母和其他特殊字符
  • 使用美国编号格式化输入字段,如
    (123)457-7890
这是我当前的代码:

jQuery("#phone_number").on("keypress", function(event) {
    var reg = /[0-9]/g;
    var key = String.fromCharCode(event.keyCode);
    if(!reg.test(key)){
        // return false if NOT number
        return false;
    } else {
        // numbers only
        var phone_value = jQuery("#phone_number").val();
        var number = phone_value.replace(/(\d{3})(\d{3})(\d{2})/,"$1-$2-$3");
        jQuery("#phone_number").val(number);
    }
});
问题:我的代码的问题是无法限制输入的长度

最终输出
应类似于
(123)457-7890
括号中的前3位数字


非常感谢您的帮助。谢谢

我想这会给你所需要的。你很接近答案

我已使用
maxlength
属性限制了
的长度,并在
phone\u值中添加了括号。replace()
函数围绕
$1

jQuery(“#电话号码”)。打开(“按键”,功能(事件){
var reg=/[0-9]/g;
var key=String.fromCharCode(event.keyCode);
如果(!注册测试(密钥)){
//如果不是数字,则返回false
返回false;
}否则{
//仅限数字
var phone_value=jQuery(“#phone_number”).val();
var number=phone_value.replace(/(\d{3})(\d{3})(\d{2})/,“($1)$2-$3”);
jQuery(“#电话号码”).val(号码);
}
});


请记住,在您的问题中只包含相关标签:)谢谢您。你能解释一下这行代码吗。。如何将
第一组
的数字限制为3位,然后
第二组
限制为3位,然后
第三组
限制为4位?该行仅将数字分组为3位、3位和2位
$1
表示第一组,
$2
表示第二组,
$3
表示第三组。那么你的替补就成功了。因此,如果您输入1234577890,它会将“123”替换为“(123)”,然后将“457”替换为“457”,将“78”替换为“-78”。“90”保持原样。因此,输出为“(123)457-7890”。希望你能理解!