Here是小提琴。我试图这样做,当你输入你的信用卡号码时,它只能是一个16位数字。
现在我正在使用:
var i = $('#input1').val();
var ii = $('#input2').val();
var iii = $('#input3').val();
var iiii = $('#input4').val();
if (i !== "" && ii !== "" && iii !== "" && iiii !== '') {
但这允许它是字母或符号或数字。
答案 0 :(得分:1)
如果您只关心验证是否所有数字,请参阅此小提琴:http://jsfiddle.net/y7sf4/
它使用此功能:
function IsNumeric(input)
{
return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0;
}
但实际上你应该尝试一些完全验证信用卡的东西,而不仅仅是它是一个16位数的数字。
答案 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}}。
答案 4 :(得分:0)
使用JQuery Mask Plugin ...然后在您的代码中,您可以将所有字段设置为仅接受具有此功能的数字:
$(document).ready(function () {
...
$("#input4").mask("9999 9999 9999 9999");
});