3

尝试跟踪输入值中的数字并将其用作最后一个数字的校验位。基本上,获取输入的前九位数字,运行一些简单的数学运算,然后将这些数字相加。取该总数,除以二,然后使用余数作为校验位。

到目前为止不成功,所以如果有人知道我哪里出错了,我会很高兴。我在这里放了一个小提琴:Das Fiddle

 window.onkeyup = keyup;
 var inputTextValue;

 function keyup(e) {
  inputTextValue = e.target.value;
  $('#numberValue').text(inputTextValue);
        // must be 10 characters long
        if (inputTextValue.length !== 10) {
            return false;
        }

        // run the checksum
        var valid = false;
        try {
            var sum = (parseInt(inputTextValue[0], 10) * 2) +
                (parseInt(inputTextValue[1], 10) * 3) +
                (parseInt(inputTextValue[2], 10) * 4) +
                (parseInt(inputTextValue[3], 10) * 2) +
                (parseInt(inputTextValue[4], 10) * 3) +
                (parseInt(inputTextValue[5], 10) * 4) +
                (parseInt(inputTextValue[6], 10) * 2) +
                (parseInt(inputTextValue[7], 10) * 3) +
                (parseInt(inputTextValue[8], 10) * 4);

            var checkNumber = 0;

            if ((sum % 10) > 0) {
                checkNumber = (sum % 10).toFixed(-1);
            }

            if (inputTextValue[9] === ("" + checkNumber)) {
                valid = true;
                alert(checkNumber)

            }
        } catch (e) {
            valid = false;
        }

        return valid;

}

4

1 回答 1

1

你应该使用:

   checkNumber = (sum % 10).toFixed(0);

toFixed(-1) 将返回 0。

在这里提琴

于 2015-08-07T03:57:49.813 回答