我只是在使用@Html.TextBoxFor(m => m.PhoneNumber, new { id = "phoneNo")
我使用正则表达式将其限制为仅10个数字。
有没有一种方法可以在他们打字时将文本框格式化为(555) 444-3333
,但在模型中它只会传递10个数字,比如5554443333
?我的意思是自动创建那些括号,同时使用regex检查他们是否输入了10个数字?
正如Matt在评论中所说,你可以使用jquery来完成这项工作,在网站的这个问题上:带有jQuery和屏蔽输入插件的手机掩码
或者使用简单的javascript,正如xxx在这里解释的那样,还有其他选择:用JavaScript 屏蔽美国电话号码字符串
为名为"电话"的示例输入编码的备选方案列表:
- 使用普通javaScript的示例代码:
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] : '');
});
- 带有jQuery但未添加任何新dependence()的示例代码:
$('#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('');
}
});
- 使用屏蔽输入插件的jQuery示例代码:
$("#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 );
}
});