我有一些输入,我想允许只输入手机,没有字母没有减号,首先必须字符必须是加号,也不能超过12个字符。最终结果必须是这样的
1234567891
到目前为止,这是我的代码
<input id="phone"></input>
Jquery的
$("input").keyup(function(){
$(this).val($(this).val().replace(/[ -]/g, ''));
});
这里我只是不允许空格和减号,我不需要添加任何字母,首先必须总是+,并且没有12个字符的bigeer
这是工作小提琴 http://jsfiddle.net/9zza5ycc/
答案 0 :(得分:0)
我不知道这是完美的方式。但我可以为您提供一个解决方案。
$(document).ready(function(){
$("#phone").keydown(function(event) {
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || (event.keyCode == 65 && event.ctrlKey === true) || (event.keyCode >= 35 && event.keyCode <= 39)) {
return;
} else {
if ((event.keyCode != 107 && !(event.shiftKey && event.keyCode == 61)) && (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 ))) {
event.preventDefault();
}
}
});
$("#phone").blur(function(event) {
var phoneNo = $('#phone').val();
if(phoneNo.charAt(0) != '+' || (phoneNo.split("+").length > 2) || phoneNo.length > 13 || phoneNo.length < 13)
{
alert('please enter valid phone number');
}
});
});
这是工作小提琴:http://jsfiddle.net/4xupb5uw/
答案 1 :(得分:0)
这将删除输入中不是数字或+字符的所有内容。
var o = input.replace(/[^\+\d]+/g, '');
然后你可以测试它的格式是否正确:
if(/^\+[\d]{6,12}$/.test(o)){
console.log('Starts with '+' and has 6 - 12 digits')
} else {
console.log('Wrong format')
}
此正则表达式将验证您的输入:
答案 2 :(得分:0)
根据您列出的规格,听起来您只是想验证国际电话号码。
如果我没有弄错的话,人们通常会在前2位数之后和之后的3位数之后用几个空格格式化国际数字,这样您可能想要检查空格是否正确好。
function validTel(phone) {
var arg = /^\+(?:[0-9]\x20?){6,14}[0-9]$/;
if (arg.test(phone)) {
// passed
} else {
// failed
}
}
^
将我们设置在字符串的开头。 \+
指定第一个字符为加号。 (?:
组.. [0-9]
数字,\x20
和空格?
零或一次。 )
结束组。 {6,12}
重复6到12次,[0-9]
个匹配的数字。 $
结束查询。
这应确保字符串以 + 符号开头,仅包含数字(可能用单个空格分隔),长度为6到12个字符。