我们的用户拥有基于某种逻辑生成的会员ID。我们希望使用JS来验证他们是否在传递给服务器之前输入了正确的成员资格代码。
请参阅以下内容:
以下是用于验证我们的会员编号的Modulus 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 :(得分: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
}
答案 1 :(得分:-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;
}