входной массив jquery для динамического слаг - PullRequest
0 голосов
/ 20 марта 2012

Я работаю в системе CMS, которая "пытается" поддерживать многоязычную систему.

У меня есть поля формы, такие как

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

и использование плагина slugger, который успешно работает, когда я выбираю поле ввода:

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

Вопрос в том, что мои en,fr,de,es значения получены из дБ. Как сделать цикл foreach, чтобы сообщить jquery, что он должен написать одну и ту же строку для нескольких языков, например:

$("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\\]]"});

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Возможно, вы могли бы использовать что-то вроде этого:

$.each(['en','fr','de','es'], function (i, lang) {
  $("input[name=title\\["+lang+"\\]]").stringToSlug({getPut: "input[name=url\\["+lang+"\\]]"});
}
0 голосов
/ 20 марта 2012

Это включает в себя только простую технику рефакторинга: сделать цикл.Если вы создаете массив языков, которые вы хотите использовать, вы можете использовать jQuery .each метод , чтобы добиться этого.

$.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 + "\\]]"}); 
} 
...