Asp.net mvc 4 设置电话号码MVC的文本框输入格式

Asp.net mvc 4 设置电话号码MVC的文本框输入格式,asp.net-mvc-4,html.textboxfor,Asp.net Mvc 4,Html.textboxfor,我只是使用@Html.TextBoxFor(m=>m.PhoneNumber,new{id=“phoneNo”) 我使用正则表达式将其限制为10个数字。 有没有一种方法可以使文本框在键入时显示为(555)444-3333,但在模型中,它只需传递10个数字,如5554443333?我的意思是自动创建这些括号,同时如果输入10个数字,还可以使用正则表达式进行检查 谢谢你正如Matt在评论中所说的那样,你可以用jquery来实现这一点,他在网站的这个问题上说: 或者使用纯javascript,正如x

我只是使用@Html.TextBoxFor(m=>m.PhoneNumber,new{id=“phoneNo”) 我使用正则表达式将其限制为10个数字。 有没有一种方法可以使文本框在键入时显示为(555)444-3333,但在模型中,它只需传递10个数字,如5554443333?我的意思是自动创建这些括号,同时如果输入10个数字,还可以使用正则表达式进行检查


谢谢你

正如Matt在评论中所说的那样,你可以用jquery来实现这一点,他在网站的这个问题上说:

或者使用纯javascript,正如xxx在这里解释的那样,还有其他选择:

为名为“电话”的示例输入编码的备选方案列表:

  • 使用纯javaScript的示例代码:
  • 使用jQuery但不添加任何新依赖项()的示例代码:
  • 戴上面具
    document.getElementById('phone').addEventListener('input', function (e) {
      var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/);
      e.target.value = !x[2] ? x[1] : '(' + x[1] + ') ' + x[2] + (x[3] ? '-' + x[3] : '');
    });
    
    $('#phone', '#example-form')
    
    .keydown(function (e) {
        var key = e.which || e.charCode || e.keyCode || 0;
        $phone = $(this);
    
        // Don't let them remove the starting '('
        if ($phone.val().length === 1 && (key === 8 || key === 46)) {
            $phone.val('('); 
            return false;
        } 
        // Reset if they highlight and type over first char.
        else if ($phone.val().charAt(0) !== '(') {
            $phone.val('('+$phone.val()); 
        }
    
        // Auto-format- do not expose the mask as the user begins to type
        if (key !== 8 && key !== 9) {
            if ($phone.val().length === 4) {
                $phone.val($phone.val() + ')');
            }
            if ($phone.val().length === 5) {
                $phone.val($phone.val() + ' ');
            }           
            if ($phone.val().length === 9) {
                $phone.val($phone.val() + '-');
            }
        }
    
        // Allow numeric (and tab, backspace, delete) keys only
        return (key == 8 || 
                key == 9 ||
                key == 46 ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105)); 
    })
    
    .bind('focus click', function () {
        $phone = $(this);
    
        if ($phone.val().length === 0) {
            $phone.val('(');
        }
        else {
            var val = $phone.val();
            $phone.val('').val(val); // Ensure cursor remains at the end
        }
    })
    
    .blur(function () {
        $phone = $(this);
    
        if ($phone.val() === '(') {
            $phone.val('');
        }
    });
    
    $("#phone").mask("(99) 9999?9-9999");
    
    $("#phone").on("blur", function() {
        var last = $(this).val().substr( $(this).val().indexOf("-") + 1 );
    
        if( last.length == 3 ) {
            var move = $(this).val().substr( $(this).val().indexOf("-") - 1, 1 );
            var lastfour = move + last;
            var first = $(this).val().substr( 0, 9 );
    
            $(this).val( first + '-' + lastfour );
        }
    });