2012-03-19 6 views
0

CMSシステムで作業していますが、ネイティブで多言語をサポートしようとしています。jquery入力配列をスラッグに動的に

私は

<input name="title[en]" type="text"> 

と私は入力フィールドを選択した場合、正常に動作し強打者プラグインを使用してのようなフォームフィールドを持っている:

$("input[name=title\\[en\\]]").stringToSlug({getPut: "input[name=url\\[en\\]]"}); 

質問です:私のen,fr,de,es値はデシベルから来ています。どのようにjqueryのそれはのような複数の言語で同じ行を書くべき伝えるためにforeachループを行うことができます。

$("input[name=title\\[en\\]]").stringToSlug({getPut: "input[name=url\\[en\\]]"}); 
$("input[name=title\\[fr\\]]").stringToSlug({getPut: "input[name=url\\[fr\\]]"}); 
$("input[name=title\\[de\\]]").stringToSlug({getPut: "input[name=url\\[de\\]]"}); 
$("input[name=title\\[es\\]]").stringToSlug({getPut: "input[name=url\\[es\\]]"}); 

答えて

0

これは、単純なリファクタリング手法が含まれます。ループを作ります。使用する言語の配列を作成する場合は、jQuery .each methodを使用してこれを達成できます。

$.each(["en", "fr", "de", "es"], function(index, lang) { 
    $("input[name=title\\[" + lang + "\\]]").stringToSlug({getPut: "input[name=url\\[" + lang + "\\]]"}); 
} 

パフォーマンスを懸念していると.each方法に伴うオーバーヘッドをしたくない場合は、代わりに伝統的なforループを使用することができます。

var langs = ["en", "fr", "de", "es"]; 
for(var i = 0; i < langs.length; i++) { 
    var lang = langs[i]; 
    $("input[name=title\\[" + lang + "\\]]").stringToSlug({getPut: "input[name=url\\[" + lang + "\\]]"}); 
} 
0

あなたは、おそらくこのようなものを使用することができます。

$.each(['en','fr','de','es'], function (i, lang) { 
    $("input[name=title\\["+lang+"\\]]").stringToSlug({getPut: "input[name=url\\["+lang+"\\]]"}); 
} 
関連する問題