检查在输入中是否只输入数值。 (jQuery的)

检查在输入中是否只输入数值。 (jQuery的)

问题描述:

我想检查,如果用户输入正确的手机号码,使用jQuery的帮助,到目前为止,我得到了这个阶段:检查在输入中是否只输入数值。 (jQuery的)

var phone = $("input#phone").val(); 
if (phone !== "") { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 

基本上它检查是否是输入的电话号码,如果这是,我想检查它是否是一个数值,如果它不显示错误消息。 任何人都可以帮助检查,如果它是数字?

+5

考虑到电话号码实际上不是一个数字,而是一个包含数字的字符串。 用户将以怪异的方式编写数字,如果你有一个全球性的应用程序,甚至更怪。记住国家代码以00或+开头,+作为电话号码有效,但不是有效的号码。 对不起,如果我没有在这里的主题,但我花了太多的时间填写网站上的“不是一个有效的数字” – 2012-01-31 20:23:03

+0

你也可以去除字符,不是数字,然后构建输入为你希望在你的条件中使用一个使用jquery'.val()'和'.length()'var valLength = $(this).val()。length;'的switch语句。 'switch(valLength){'然后在长度值处添加用于检查数值的大小写,或者使用正则表达式if语句来确定您的值是否为数值,如果长度数组中的值为数值。 – 2017-07-08 10:06:08

+0

为什么/为什么不是regexp比jQuery isNumeric()更好? – 2017-12-21 21:20:41

尝试......这将确保字符串“手机”只包含数字和将至少包含一个数字

if(phone.match(/^\d+$/)) { 
    // your code here 
} 
+0

这是一个很好的选择,因为jQuery.isNumeric()不验证长值(Int64)。 – 2014-05-28 15:33:25

+0

我认为这很重要,关于如何确保电话号码只有数字值(Int64)值的OP原始问题。电话号码表格输入将有30个输入。对于美国的电话输入,一个可能长得可笑的长条目可能会等于...(555)555-5555分机号码:(5555)。因此,我们的示例字符串中总共使用了25个字符的展示位置。一个限制25个位置的注册表是我们需要确保的(int64)不被不恰当地使用该表单的人使用。只是说... – 2017-07-08 09:44:44

http://docs.jquery.com/Plugins/Validation/CustomMethods/phoneUS

检查出来。它应该是你正在寻找的东西。美国手机验证插件jQuery。

如果你想自己做,你会进行大量的工作。查看isNaN()功能。它告诉你它是不是一个数字。你也想要在正则表达式上进行验证。如果您使用的是RegEx,那么您可以不用isNaN(),因为无论如何您都会进行测试。

存在jQuery的内置函数来检查这个(ISNUMERIC ),所以请尝试以下操作:

var phone = $("input#phone").val(); 
    if (phone !== "" && !$.isNumeric(phone)) { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 
+0

真棒,没有意识到这已被添加到jQuery。应该是'$ .isNumeric'? – 2012-01-31 20:54:10

+0

你是对的,这个函数自v 1.7以来被添加 – 2012-01-31 20:57:32

+0

我试过了,但是如果你有长的值(Int64),它就不起作用,所以只能用于正常的int值。 – 2014-05-28 15:23:39

我用这个:

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
phone_number = phone_number.replace(/\s+/g, ""); 
return this.optional(element) || phone_number.length > 9 && 
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 

为未来可见itors,您可以添加此functon,允许用户只输入数字:你只需要添加jQuery和类名的输入检查为http://jsfiddle.net/celia/dvnL9has/2/

$('.phone_number').keypress(function(event){ 
var numero= String.fromCharCode(event.keyCode); 
var myArray = ['0','1','2','3','4','5','6','7','8','9',0,1,2,3,4,5,6,7,8,9]; 
index = myArray.indexOf(numero);// 1 
var longeur= $('.phone_number').val().length; 
if(window.getSelection){ 
text = window.getSelection().toString(); 
} if(index>=0&text.length>0){ 
    }else if(index>=0&longeur<10){ 
    }else {return false;} }); 

我用这个来检查所有的文本框有数值:一个

if(!$.isNumeric($('input:text').val())) { 
     alert("All the text boxes must have numeric values!"); 
     return false; 
    } 

或:

$.isNumeric($("txtBox").val()); 

可使用jQuery 1.7。

if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){ 
      alert('Please enter only numbers into amount textbox.') 
      } 
      else 
      { 
      alert('Right Number'); 
      } 

我希望这段代码可以帮到你。

在此代码中,如果条件将返回true,如果有任何数量的小数位数的合法小数。并且提示会提示“正确的号码”信息,否则它会显示一个警告弹出消息“请仅将数字输入到金额文本框中”。

谢谢... :)

这不是一个确切的答案的问题,但对于手机验证另外一个选择,就是要保证数量,你期待的格式被输入。

这是我设计的onInput事件中的一个函数,它会去除任何非数字输入,并在“右”点自动插入破折号,假定xxx-xxx-xxxx是所需的输出。

<input oninput="formatPhone()">

function formatPhone(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] : ''); 
} 

我用这种验证....检查粘贴的文本,如果它包含字母,显示了用户和错误,则延迟后明确开箱用户检查文字并做适当的修改。

$('#txtbox').on('paste', function (e) { 
      var $this = $(this); 
      setTimeout(function (e) { 
       if (($this.val()).match(/[^0-9]/g)) 
       { 
        $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");      
        setTimeout(function (e) { 
         $this.val(null); 
        },2500); 
       }     
      }, 5); 
     });