1

我在一个为 Windows 7/8 创建无人参与的 XML 文件的网站上工作。

我做了一个“产品密钥”文本输入,用户可以在其中输入他们的产品密钥,它将把它添加到 XML 中,这样他们就不会在安装过程中收到提示。

这是我到目前为止所拥有的:

<td>Product Key:</td>
<td><input id="ProductKey1" size="5" maxlength="5" type="text">-<input id="ProductKey2" maxlength="5" size="5" type="text">-<input id="ProductKey3" maxlength="5" size="5" type="text">-<input id="ProductKey4" maxlength="5" size="5" type="text">-<input id="ProductKey5" maxlength="5" size="5" type="text"></td>

我基本上添加了 5 个文本输入,最大长度为 5 个字符,每个字段用“-”分隔。

我想做的是为产品密钥设置一个更长的字段,并让它在每 5 个字符后插入“-”。用javascript实现这个最简单的方法是什么?

4

3 回答 3

2

您可以模拟破折号,将其放在输入字段上并添加 onkeyup 控件以添加空格,或 jquery.maskedinput:http ://digitalbush.com/projects/masked-input-plugin/

于 2013-03-08T14:51:34.040 回答
0

有很多方法可以实现这一目标。但我要做的是每 5 个字符“substr”字符串。我会这样做:

function split_product_key(t) {
    // How many characters in string
    var length = t.length;
    // How many "5 chars length strings" is there in your string
    var loop = Math.ceil(length/5);
    // Create the output.
    var output = '';
    for (var i =1; i<=loop; i++) {
        // Getting the 5 chars substr
        output += t.substr((i*5),5) + '-';
    }
    // Removing the last "-"
    output = output.substr(0, output.length-1);
    return output;
}

然后,您所要做的就是获取用户输入的产品密钥并将其传递给“split_product_key”,如下所示: var splitted_product_key = split_product_key(original_product_key); 如果您想实时更新值,只需在输入上添加更改并使输入值 split_product_key(current_input_value) 我希望这很清楚,希望对您有所帮助!

于 2013-03-08T15:05:59.830 回答
0
function split_product_key(t) {
    t = t.toUpperCase();
    var key = t.replace(/([\w]{4})([\w]{4})([\w]{4})([\w]{4})/, function(match, p1, p2, p3, p4, offset, string){
        return [p1, p2, p3, p4].join('-');
    });
    return key;
}

这个使用正则表达式使 16 位字符串看起来像“NLEB-8KPR-RZR1-QWJF”,编辑正则表达式部分以更改模式。另外,这是一篇旧帖子,但我搜索了一个简单的解决方案,就是这样。

于 2018-09-29T19:18:23.920 回答