在Chrome中,该脚本可以正常工作,因为+
被视为数字的一部分。但是,在Firefox中,假设在输入类型数字上键入+
,然后键入移动电话号码,它将其视为无效。尽管包含有效数字,但下面的if
条件仍然是true
并显示警报。 https://jsfiddle.net/4xo50sdt
function validation() {
if($("#num").val() == "") {
alert("enter a valid mobile number");
}
}
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<input type="number" id="num">
<input type="button" onclick="validation()"; value="submit">
答案 0 :(得分:0)
正如许多人在对您的问题的评论中所说,在输入或获取电话/手机号码时使用type="number"
是有意义的,因为它们实际上并不是数字。如前所述,它可以包含诸如+
,#
,+
,-
之类的字符,而所有这些字符都不是数字,则{{1}中的input
}}不会接受它们。
我的建议是关注@scrappedcola评论。
但是,无论如何,您可以使用以下代码绕过此操作,以接受数字和type=number
符号...
但是,如果您在开头添加+
,然后输入一些数字并单击以获取输入值,则会看到+
被裁剪,并且如果在任何数字后加上+
,整个号码将无效。
+
document.getElementById("inputPhone").onkeypress = function(ev){
if (ev.key == "Backspace"){
this.value = this.value.substring(0,this.value.length-1);
} else if(isNaN(parseInt(ev.key)) && ev.key != "+"){
ev.preventDefault;
return false;
}
}
function checkNumber(){
console.log(document.getElementById("inputPhone").value)
}