如何使Firefox将加号视为输入类型编号中的有效输入?

时间:2018-08-30 18:09:36

标签: javascript jquery html5-input-number

在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">

1 个答案:

答案 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)
}