0

我有两个输入字段。第一个是用户输入任何文本(例如产品名称)的字段,另一个是产品名称的“别名”字段,当用户写入产品名称时,它会实时自动创建。它是用 javascript 完成的,所以我的问题是如何添加一些 javascript 代码以便在每个别名的末尾添加一些随机代码,例如 (aSDAS55AD546)。

这是代码:

输入字段:

产品名称:

<input id="asd" onKeyUp="keypress()" name="editname_<? echo $languages[$i][0]; ?>[<? echo $key; ?>]" type="text" value="<? echo $item['name'][$languages[$i][0]];?>" />

别名字段:

<input name="editalias[<? echo $key; ?>]" id="sdf" onFocus="javascript:stripspaces(this)" readonly="readonly" type="text" value="<? echo $item['alias'];?>" />

这是javascript代码:

<script type="text/javascript"> 

function keypress()
{ 
var txt=document.getElementById('asd').value;
str1 = " \",'!=:;\йцукенгшщзхъжэдлорпавыфячсмитьбюЙЦУКЕНГШЩЗХЪЭЖДЛОРПАВЫФЯЧСМИТЬБЮăîșțĂÎȘȚ"; 
str2 = "00000000icukengsszhijedlorpavifacsmitibuICUKENGSSZHIEJDLORPAVIFACSMITIBUaistAIST";
for(i=0; i<str1.length; i++) 
   { 
 txt = txt.replace(new RegExp(str1[i],"g"), str2[i]); 
} 

document.getElementById('sdf').value=txt;
} 
</script> 


<script type="text/javascript">
$().ready(function(){
    $("input#asd").keyup(removeextra).blur(removeextra);
});
function removeextra() {
    var initVal = $(this).val();
    outputVal = initVal.replace(/[^0-9a-zA-Zа-яА-Я\s'",!ăîșțĂÎȘȚ]/g,"");       
    if (initVal != outputVal) {
        $(this).val(outputVal);
    }
};
</script>

这个 javascript 为我节省了很多时间。我的网站是针对俄罗斯的,它还可以将俄文字母翻译成英文字母。

那么请问我怎样才能为别名制作一个随机代码?

提前致谢!

4

1 回答 1

0

下划线库具有用于此目的的功能。我强烈推荐这个库,但如果你只想要一个函数的逻辑,它基本上只是:

var idCounter = 0;
function uniqueId(prefix) {
    var id = idCounter++;
    return prefix ? prefix + id : id;
};

有了它,你可以这样做:

var aliasOfFoo = uniqueId(originalFoo);

现在,如果您需要后缀是随机的,事情会变得有点棘手。您需要一个 idArray 来存储所有先前生成的随机字符串,而不是使用 idCounter,然后在 uniqueId 中您希望继续生成随机字符串,直到找到一个不在 idArray 中的字符串。

于 2012-12-11T20:16:28.740 回答