嗨,我有这个脚本,它在页面加载时将一个唯一的代码加载到表单输入字段中。只有它会生成一个长值。如何将此值缩短为字符大小的一半。
它生成的示例代码: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>
XXXXX
是replaced
,所以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>