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

Javascript 如何在表单字段输入中生成简短的唯一代码号?,javascript,php,jquery,html,Javascript,Php,Jquery,Html,您好,我有一个脚本,它将一个唯一的代码加载到页面加载的表单输入字段中。只有它才能产生长期价值。如何将此值缩短到字符数的一半 它生成的示例代码: adf4a039-7c9d-4642-94f2-0569910a4a10 脚本 <script> $(document).ready(function() { function invoiceid() { var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-

您好,我有一个脚本,它将一个唯一的代码加载到页面加载的表单输入字段中。只有它才能产生长期价值。如何将此值缩短到字符数的一半

它生成的示例代码: 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>

$(文档).ready(函数(){
函数invoiceid(){
var d=新日期().getTime();
变量uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxx'。替换(/[xy]/g,函数(c){
var r=(d+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
返回uuid;
};
document.getElementById('invoiceid')。onclick=function(){
document.getElementById('uuid')。innerHTML=invoiceid();
};
document.getElementById('uuid')。innerHTML=invoiceid();
});

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

var shortId = invoiceid().substr(0, 18);
但是,请注意,这会增加重复值的可能性。使用此方法可能需要您检查以前具有相同值的发票ID

完整代码(为jQuery更新):


$(文档).ready(函数(){
函数invoiceid(){
var d=新日期().getTime();
变量uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxx'。替换(/[xy]/g,函数(c){
var r=(d+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
返回uuid;
};
函数shortInvoiceId(){
return invoiceid().substr(0,18);
}
$('#invoiceid')。在('click',function()上{
$('#uuid').html(shortInvoiceId());
});
$('#uuid').html(shortInvoiceId());
});

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

var shortId = invoiceid().substr(0, 18);
但是,请注意,这会增加重复值的可能性。使用此方法可能需要您检查以前具有相同值的发票ID

完整代码(为jQuery更新):


$(文档).ready(函数(){
函数invoiceid(){
var d=新日期().getTime();
变量uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxx'。替换(/[xy]/g,函数(c){
var r=(d+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
返回uuid;
};
函数shortInvoiceId(){
return invoiceid().substr(0,18);
}
$('#invoiceid')。在('click',function()上{
$('#uuid').html(shortInvoiceId());
});
$('#uuid').html(shortInvoiceId());
});

正在替换
XXXXX
,因此
X
越多/越少,将生成越大/越小的
ID

函数invoiceid(){
var d=新日期().getTime();
//删除一些X以生成较小的ID
//如果不想在节中格式化ID,也可以删除“-”
变量uuid='xxxx-xxxx4xx'。替换(/[xy]/g,函数(c){
var r=(d+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
document.getElementById('uuid')。innerHTML=uuid;
//返回uuid;
}
window.onload=invoiceid

新ID
正在替换
XXXXX
,因此
X
越多/越少,将生成越大/越小的
ID

函数invoiceid(){
var d=新日期().getTime();
//删除一些X以生成较小的ID
//如果不想在节中格式化ID,也可以删除“-”
变量uuid='xxxx-xxxx4xx'。替换(/[xy]/g,函数(c){
var r=(d+Math.random()*16)%16 | 0;
d=数学楼层(d/16);
返回值(c='x'?r:(r&0x3 | 0x8)).toString(16);
});
document.getElementById('uuid')。innerHTML=uuid;
//返回uuid;
}
window.onload=invoiceid

新ID
我同意前面的评论-如果这是唯一的,那么你应该坚持使用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>

函数随机字符串(len,charSet){
字符集=字符集| |‘abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz012456789’;
var randomString='';
对于(变量i=0;i
我同意前面的评论-如果这对独特性很重要,你应该坚持使用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>

函数随机字符串(len,charSet){
字符集=字符集| |‘abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz012456789’;
var randomString='';
对于(变量i=0;i