2016-06-27 2 views
-1

ユーザーには、何らかのロジックに基づいて生成されたメンバーシップIDがあります。サーバーに渡す前に適切なメンバーシップコードを入力しているかどうかを確認するために、JSを使用したいと考えています。メンバーシップIDの複合JS検証

以下を参照してください:

以下は、当社の会員番号を検証するために使用するモジュラス7アルゴリズムの一例です。トランザクションファイル(上記のフォーマットを参照)で私たちに渡されたメンバーシップ番号はこれに準拠する必要があります。正しい数字の

8 digit number – (7 x Quotient (8 digit number/7)) 

If 8 digit number = 71231231----------------------------- (A) 

E.g. 71231231 – (7 x Quotient (71231231/7)) 

= 71231231 – (7 x Quotient (10175890.142857142857142857142857)) 

= 71231231 – (7 x 10175890) 

= 71231231 - 71231230 

= 1 ---------------------------------------------------- (B) 

Therefore the membership number = (B) concatenated to the end of (A) = 712312311 

例: 00999999033、あなたが何ができるか00999999044

+0

次の機能により、これを確認することができますが、私はそれを理解しようとしましたが、まだ成功していません。 – Hossj

答えて

1

あなたの予想アルゴリズムを言い換え

あなたの会員IDは、先行ゼロなしの9桁の番号を持っています。この数値は、同じ8桁の直後の最初の8桁のうちの7桁のモジュロを後にすることによって行われます。

例:

A valid ID: 00999999044 

    The breakdown of this should be [99999904] [99999904 mod 7] 

あなたは完全に正直に言うとJS

function checkID(id) { 

    id = parseInt(id); 

    if (String(id).length !== 9)    //Fail if n digits are incorrect 
     return false; 

    var firstEight = Math.floor(id/10);  //Get first 8 digits 
    var modulo7 = firstEight % 7;    //Get the modulo 

    return id === firstEight * 10 + modulo7; //Check if modulo is after the 8 digits 

} 
+0

ありがとうございます、私たちはこれをチェックし、それに応じて正しくマークします。 – Hossj

-1

は、サーバーにデータを送信する前に、あなたのモジュラスロジックを実行し、フォームを持っています。 HTML

<form id="form"> 
    <input id="membershipNumber" required> 
    <button type="submit">Submit</button> 
</form> 

JS

document.getElementById('form').addEventListener('submit', function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    var membershipNumber = document.getElementById('membershipNumber').value; 
    var newMembershipNumber = membershipNumber + String(setModulus7(membershipNumber)); 

    //send new membership number to backend 
    console.log(newMembershipNumber); 
}); 

function setModulus7(value) { 
    var checkDigit = value - (7 * (Math.floor(value/7))); 
    return checkDigit; 
} 

https://jsfiddle.net/34d9o7rf/1

+0

これはOPの質問ではありません –

+0

申し訳ありませんが、回答は更新されました – derp