0

カード番号の形式が正しいかどうかを確認するループを作成しようとしていますが、それを機能させることができず、デバッグが機能していません。

形式を確認する必要があります: XXX-XXX-XXX1

これが私のJavaScriptです:

if(pieces[2] == ''){
                $('#hcc_validated').value = 'incorrect';
                showCardError();
                $('#fname').value = '3';
            }else if((pieces[0].length == 3 && typeof pieces[0] == "string") && (pieces[1].length == 3 && typeof pieces[1] == "string") && (thirdp.length == 3 && typeof thirdp == "string") && (fourthp.length == 1 && typeof fourthp == "number")){
                $('#hcc_validated').value = 'validated';
                showCardError();
                $('#fname').value = '2';
            }else{
                $('#hcc_validated').value = 'not validated';
                showCardError();
                $('#fname').value = '1';
            }   

誰が私が間違っているのかを見ることができますか? (これはコードの一部にすぎませんが、コードの残りの部分は正常に動作するため、これが間違っていることは確かです...

完全なコードが必要な場合は、これが私の JSFiddle です

みんなありがとう

4

2 に答える 2

2

これは、正規表現を使用してより適切に解決できます。

具体的には;

[0-9]{3}-[0-9]{3}-[0-9]{3}1

Javascript:

var inputstring = "123-123-1231";
var pattern = new RegExp("[0-9]{3}-[0-9]{3}-[0-9]{3}1");
var result = pattern.test(inputstring);

// now result contains true or false
于 2013-10-30T06:12:25.440 に答える
0

あなたが持っていると仮定すると:

> var fourthp = pieces[2].slice(-1);

その場合、それが文字列であることはほぼ保証されているので、いつ

> (fourthp.length == 1 && typeof fourthp == "number")

本当ですか?Number であっても、fourp.lengthundefinedになるため、いずれにしても常に false になります。

于 2013-10-30T06:17:30.273 に答える