0

2 つの入力フィールドがあります。1つ目はユーザーが任意のテキスト(例:製品名)を書き込むフィールドで、もう1つは製品名の「エイリアス」と呼ばれるフィールドで、ユーザーが製品名を入力するとリアルタイムで自動的に作成されます。それはjavascriptで行われるので、私の質問は、(aSDAS55AD546)AT THE END OF EACH ALIASのようなランダムコードを追加するために、JavaScriptコードを追加する方法です。

コードは次のとおりです。

入力フィールド:

商品名:

<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

underscore ライブラリには、まさにこの目的のための関数があります。ライブラリを強くお勧めしますが、その 1 つの関数のロジックだけが必要な場合は、基本的には次のとおりです。

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

これで次のことができます:

var aliasOfFoo = uniqueId(originalFoo);

接尾辞をランダムにする必要がある場合は、少し複雑になります。idCounter を使用する代わりに、以前に生成されたすべてのランダム文字列を格納する idArray が必要です。次に、idArray にない文字列が見つかるまで、uniqueId 内でランダム文字列を生成し続けます。

于 2012-12-11T20:16:28.740 に答える