2

我正在使用一段 JavaScript 代码来识别用户输入的信用卡号类型。我对 JavaScript 了解不多,并且正在使用在网络上找到的代码。我已经让它毫无问题地工作,但我希望有人能向我解释为什么特定部分会以它的方式工作。

当用户开始输入信用卡号时,JavaScript 函数使用的值与数字不同。例如,当我输入 3 时,charCode变量为 51。我只是想了解如何从 3 获得 51,以便可以将此函数用于其他卡类型。

JAVASCRIPT:

<script type="text/javascript">
function handleKeypress(inCardNumber,e) {
    var inCardNumber = document.form.cardNumber;

    var charCode;
    if(e && e.which) {
        charCode = e.which; // For Firefox
    }
    else if(window.event){
        e = window.event;
        charCode = e.keyCode; // For IE
    }

    if (inCardNumber.value.length === 1) { 
        switch (charCode) {
        case (48):
            swapVISA.src = "/images/icons/payments/VISA-dim.png";   
            break;
        case (49):
            swapVISA.src = "/images/icons/payments/VISA-dim.png";
            break;


etc

HTML

onkeyup="handleKeypress(this,event);"
4

5 回答 5

2

有关ASCII id 列表,请参阅本页末尾的彩色表格。这里也是

但我建议阅读所有页面。

简要说明:

键盘上的每个键都分配有一个 ASCII ID 的映射。所以 Enter 是 13,Esc 是 27 等等。

于 2013-08-01T19:44:18.837 回答
1

字符代码只是一个按键的表示,它们只是一个代码对应什么按键的标准,所以不要想太多。请记住,键盘上的每个键都有一个与之关联的字符代码。

以下是字符代码列表以及测试它们的交互式工具:http: //www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

正如 UweB 指出的那样,从这样的代码中获取实际字符:

var theChar = String.fromCharCode(charCode);
于 2013-08-01T19:43:07.010 回答
0

值 51 是字符“3”的 Unicode(或ASCII,如果这更容易理解)值。有关更多信息,请参阅此问题:JavaScript KeyCode vs CharCode

所以换句话说,你没有在 charCode 中得到一个字符串对象。

于 2013-08-01T19:49:23.717 回答
0

这是由于字符3ASCII值(ASCII 是计算机广泛使用的数字表示各种常见字符的方式)。如果您查看该 Wikipedia 文章的ASCII 可打印字符部分,您会看到字形(或字符)3Dec值为51. 您可以在同一张表中查看其他常见可打印字符的 dec 值。

请记住,当您按下3键盘上的键时,计算机将看到字符 3,而不是 的原始数值3。该表的 Glyph 列表示字符值,Dec 列表示在 ASCII 方案中表示该字符的原始整数值。您还可以在该表中看到二进制表示,这是 Dec 整数值分解为计算机如何在最低级别实际处理该值的内容。

在您的代码中,该charCode变量被分配了击键的dec值(通过e.whiche.keyCode,其中e看起来是基本 JavaScriptEvent对象),其类型为Number。这就是为什么switch在代码的更下方是charCode与数值进行比较的原因。

fromCharCode()您可以使用和函数在 JavaScript 中的字符及其 dec 值之间切换charCodeAt()

于 2013-08-01T19:53:48.820 回答
-1

您将在事件中获得 ascii 字符代码。您可以通过

var theChar = String.fromCharCode(charCode);
于 2013-08-01T19:42:58.953 回答