我需要正确格式化我的电话号码字段,我几乎完成了它。
我能够使用此脚本在电话号码中添加破折号,但我怎样才能添加" + 1"键入所有10个号码后到电话号码的前面?
$('#tel').keyup(function(){
$(this).val($(this).val().replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
});
答案 0 :(得分:3)
当数字为十位数或更多时,您可以使用回调添加.myelement {
/* some styling #1 */
/* note: no hover state here */
}
@media(hover: hover) {
.myelement {
/* some styling that override #1 styling in case this browser suppot the hover*/
}
.myelement:hover {
/* what to do when hover */
}
}
,并在十位数以下时删除前缀和连字符等
$(".Wrapper").on("click", ".testDivs", function () {
var thisTop = $(this).position().top;
$(".testDivs").each(function(i, obj) {
var otherTop = $(obj).position().top;
if(thisTop < otherTop){
$(".fullWidthDiv").insertBefore(obj);
return;
}
});
});
&#13;
+1
&#13;
答案 1 :(得分:2)
如果可能的话,我建议您将keyup
事件替换为input
(其中IE 10+ support)。接下来,您应该重新设置过滤器以获得真正的数值。然后对你的正则表达式。在我的例子中,我用短划线分隔值替换了非10位数字,修剪了任何结果的尾随破折号,并用相同的值替换了一个完整的10位数值,并在开头用+1
替换。
$('#tel').on('input', function(){
var filteredValue = this.value.replace('+1 ', '').match(/\d*/g).join('');
$(this).val(filteredValue
.replace(/(\d{0,3})\-?(\d{0,3})\-?(\d{0,4}).*/,'$1-$2-$3')
.replace(/\-+$/, '')
.replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'+1 $1-$2-$3'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id=tel>
这是一个更接近原版的简化版本,仅在10位数字的末尾进行替换。
$('#tel').on('input', function(){
var filteredValue = this.value.replace('+1 ', '').match(/\d*/g).join('');
$(this).val(filteredValue
.replace(/(\d{3})\-?(\d{3})\-?(\d{4}).*/,'+1 $1-$2-$3'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id=tel>