如何在表单字段输入中生成一个简短的唯一代码号


How can I generate a short unique code number inside a form field input?

嗨,我有这个脚本,它在页面加载时将一个唯一的代码加载到表单输入字段中。只有它会生成一个长值。如何将此值缩短为字符大小的一半。

它生成的示例代码:adf4a039-7c9d-4642-94f2-0569910a4a10

脚本

<script>
$(document).ready(function() {
function invoiceid() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
};
document.getElementById('invoiceid').onclick = function() {
    document.getElementById('uuid').innerHTML = invoiceid();
};
document.getElementById('uuid').innerHTML = invoiceid();
});
</script>

XXXXXreplaced,所以X越多/越少,生成的ID就越大/越小。

function invoiceid() {
    var d = new Date().getTime();
    // Remove some of the X's to generate a smaller ID 
// You can also remove '-' if you don't want the ID formatted in sections
    var uuid = 'xxxx-xxxx4xx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    document.getElementById('uuid').innerHTML=uuid;
    //return uuid;
}
 window.onload=invoiceid;
<div id="uuid"></div><button onclick="invoiceid()">New ID</button>

编码快乐!

我正在努力解决的问题是,简单地缩短它就打破了UUID的惯例。然而,如果你真的想,你可以简单地substr()它…

var shortId = invoiceid().substr(0, 18);

但是,请注意,这会增加重复值的机会。使用此方法可能需要检查以前具有相同值的发票ID。

完整代码(针对jQuery更新):

<script>
$(document).ready(function() {
function invoiceid() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
};
function shortInvoiceId() {
    return invoiceid().substr(0, 18);
}
$('#invoiceid').on('click', function() {
    $('#uuid').html(shortInvoiceId());
});
$('#uuid').html(shortInvoiceId());
});
</script>

http://jsfiddle.net/to52rrt9/2/

我同意前面的评论-如果这是唯一很重要,那么您应该使用UUID。如果您只想生成看起来随机的代码,请参阅此答案和相关答案,了解在JavaScript中生成随机字母数字的许多方法。例如:

<script>
function randomString(len, charSet) {
    charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var randomString = '';
    for (var i = 0; i < len; i++) {
        var randomPoz = Math.floor(Math.random() * charSet.length);
        randomString += charSet.substring(randomPoz,randomPoz+1);
    }
    return randomString;
}
$(document).ready(function() {
document.getElementById('invoiceid').onclick = function() {
    // random 5-character string
    document.getElementById('uuid').innerHTML = randomString(5); 
};
document.getElementById('uuid').innerHTML = randomString(5);
});
</script>
相关文章: