将表单输入限制为16位数字

时间:2013-08-19 16:44:47

标签: jquery validation if-statement

Here是小提琴。我试图这样做,当你输入你的信用卡号码时,它只能是一个16位数字。

现在我正在使用:

var i = $('#input1').val();
var ii = $('#input2').val();
var iii = $('#input3').val();
var iiii = $('#input4').val();
if (i !== "" && ii !== "" && iii !== "" && iiii !== '') {

但这允许它是字母或符号数字。

5 个答案:

答案 0 :(得分:1)

如果您只关心验证是否所有数字,请参阅此小提琴:http://jsfiddle.net/y7sf4/

它使用此功能:

function IsNumeric(input)
{
    return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0;
}

但实际上你应该尝试一些完全验证信用卡的东西,而不仅仅是它是一个16位数的数字。

查看http://jquerycreditcardvalidator.com/

答案 1 :(得分:0)

您可以使用此函数检查每个值,以确保它是数字,这是我可能会做的:

function isNumber(val) {
return !isNaN(val - 0) && val != null;
}

或者,如果你想得到真正的幻想,你总是可以阅读正则表达式,并使用javascripts正则表达式函数... http://www.regular-expressions.info/creditcard.html

答案 2 :(得分:0)

你可以使用单个输入,设置maxlenght,这只允许16个字符放入文本框。然后只需测试长度,所有字符都是javascript的数字。

<强> HTML

<input type="text" name="ccn" maxlength="16" id="ccn">

<强>的Javascript

var ccn = $('#ccn').val();
//Test the length, and use a regex to test 
//that there are 16 numbers
if( ccn.length < 16 || !/[0-9]{16}/.test(ccn) ) {
   //Invalid credit card number do error code here
}

或保留您的分组输入,将每个框的maxlength设置为4,并测试每个框的长度和有效数字

<强> HTML

<input type="text" name="ccn1" maxlength="4" id="ccn1">
<input type="text" name="ccn2" maxlength="4" id="ccn2">
<input type="text" name="ccn3" maxlength="4" id="ccn3">
<input type="text" name="ccn4" maxlength="4" id="ccn4">

<强>的Javascript

function is_ccnGroup(group) {
    if( group.length < 4 || !/[0-9]{4}/.test(group) ) {
       return false;
    }

    return true;    
}

if( is_ccnGroup($('#ccn1').val()) &&
    is_ccnGroup($('#ccn2').val()) &&
    is_ccnGroup($('#ccn3').val()) &&
    is_ccnGroup($('#ccn4').val()) ) {
    // All the groups seem to be valid
} else {
   //One or more of the groups are invalid
}

也许还可以使用jquery的.map函数来减少4组方式的代码。

答案 3 :(得分:0)

您可以在HTML(5)中执行此操作,其简单如下:

<input type='number' pattern='.{16}' />

请注意,并非所有浏览器都支持type='number'pattern,但我相信所有主流浏览器的最新版本都支持{{1}}或{{1}}。

jsfiddle

处查看

答案 4 :(得分:0)

使用JQuery Mask Plugin ...然后在您的代码中,您可以将所有字段设置为仅接受具有此功能的数字:

$(document).ready(function () {

    ...
    $("#input4").mask("9999 9999 9999 9999");
});

jsfiddle here