2013-08-19 52 views
-1

Here是小提琴。我试图做到这一点,当你输入你的信用卡号码,它可以只有是一个16位数字。将表单输入限制为16位数字

现在我使用:

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

但是这使得它可以字母或符号号码。

+0

在哪里你检查数字? – putvande

+0

您所做的只是检查输入的值是否为空字符串......所以您的代码按设计工作! –

+0

这只是检查空。阅读此:http://stackoverflow.com/questions/4514430/credit-card-checksums-and-validations-that-do-not-require-connection-to-the-fina –

回答

0

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

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

或者,如果你想获得真正看中的,你总是可以读到正则表达式,并使用正则表达式的JavaScript功能... http://www.regular-expressions.info/creditcard.html

1

如果你只关心确认,如果一切都是数字,看到这个小提琴:http://jsfiddle.net/y7sf4/

它使用此功能:

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

但真的,你应该尝试一些验证信用卡完全,而不仅仅是如果它是一个数字16位数字。

看看http://jquerycreditcardvalidator.com/

+0

我尝试了验证程序,但它不适用于我。你提出的代码也没有工作。 –

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 
} 

或与每个中设置最大长度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组的方式。

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

注意,并不是所有的浏览器都支持type='number'pattern但我相信,最近的所有主流浏览器做版本:

+0

您可以通过添加'pattern'属性来适应现代浏览器来改进该HTML。 –

+0

你能提供一个小提琴吗? –

+0

我有复制和粘贴的代码,我不知道应该发生什么。你可以解释吗? –

0

您可以在HTML(5)为做到这一点,它的那样简单。

检查出来了,在jsfiddle

+2

看起来并不像所有的浏览器都支持这个,具体来说,Firefox似乎并不支持这一点,http://caniuse.com/input-number –

+0

我的Firefox支持它就好了,即时通讯v.23.0.1 – Muleskinner

+0

嗯,必须是该网站数据库过时,然后 –

0

使用JQuery Mask Plugin ...然后在你的代码,你可以设置所有领域使用该功能只接受数字:

$(document).ready(function() { 

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

jsfiddle here