Динамичная транслитерация рус-en
Нашёл хороший скрипт:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Translit</title> <script type="text/javascript"> /* Javascript functions */ function JSfunc() { /* Making transliteration! */ this.strTranslit = function(el) { new_el = document.getElementById('out'); A = new Array(); A["Ё"]="YO";A["Й"]="I";A["Ц"]="TS";A["У"]="U";A["К"]="K";A["Е"]="E";A["Н"]="N";A["Г"]="G";A["Ш"]="SH";A["Щ"]="SCH";A["З"]="Z";A["Х"]="H";A["Ъ"]="'"; A["ё"]="yo";A["й"]="i";A["ц"]="ts";A["у"]="u";A["к"]="k";A["е"]="e";A["н"]="n";A["г"]="g";A["ш"]="sh";A["щ"]="sch";A["з"]="z";A["х"]="h";A["ъ"]="'"; A["Ф"]="F";A["Ы"]="I";A["В"]="V";A["А"]="A";A["П"]="P";A["Р"]="R";A["О"]="O";A["Л"]="L";A["Д"]="D";A["Ж"]="ZH";A["Э"]="E"; A["ф"]="f";A["ы"]="i";A["в"]="v";A["а"]="a";A["п"]="p";A["р"]="r";A["о"]="o";A["л"]="l";A["д"]="d";A["ж"]="zh";A["э"]="e"; A["Я"]="YA";A["Ч"]="CH";A["С"]="S";A["М"]="M";A["И"]="I";A["Т"]="T";A["Ь"]="'";A["Б"]="B";A["Ю"]="YU"; A["я"]="ya";A["ч"]="ch";A["с"]="s";A["м"]="m";A["и"]="i";A["т"]="t";A["ь"]="'";A["б"]="b";A["ю"]="yu"; new_el.value = el.value.replace(/([\u0410-\u0451])/g, function (str,p1,offset,s) { if (A[str] != 'undefined'){return A[str];} } ); } /* Normalizes a string, eю => eyu */ this.strNormalize = function(el) { if (!el) { return; } this.strTranslit(el); } } var oJS = new JSfunc(); </script> </head> <body> <p>введите текст:</p> <textarea onkeyup="oJS.strNormalize(this)" style="height:10em;width:100%" id="in"></textarea> <p>результат:</p> <textarea style="height:10em;width:100%" id="out"></textarea> </body> </html> подскажите как нужно дополнить скрипт, чтобы при вводе пробела, он был заменён на _ (нижнее подчёркивание). Цель: для ЧПУ |
Здравствуйте!
Судя по вашему сообщению, вы ну совсем не знаете javascript. Освойте основы языка и вопрос отпадет сам, полностью или частично. А с чем не справитесь - поможем. На сайте javascript можно начать изучать с учебника, раздел Основы javascript. Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/ Задавайте конкретные вопросы по ходу дела. |
Цитата:
Относительно этого скрипта - не понятно зачем Вы мне рекомендуете изучать html. Помоему он здесь в данном случае не нужен вовсе. Если поставить A[" "]="_";то ничего не выйдет - я это без особых знаний понимаю и даже не пробовал этот вариант. Наивно попробовал A[" "]="_";- конечно не сработало. Пробел это же символ и его нужно указать. Потом я обнаружил, что если я перенесу строку, транслитерация также перенесётся синхронно на следующую строчку. Я прикинул что отвечает за это скорее всего строчка new_el.value = el.value.replace(/([\u0410-\u0451])/g, - но могу ошибаться.. А так как таких ньюансов я не ведаю, решил опоститься здесь чтобы мне кинули строчку символов обозначающую пробел и замены его на _ видел функцию str.replace(' ','_') но даже пробовать не рискнул - в js не так всё просто... |
Цитата:
Цитата:
|
Цитата:
Цитата:
от того, что вы попробуете пускай даже бредовую идею, ничего страшного тут не случится Цитата:
только в виде: new_el.value = el.value.replace(/([\u0410-\u0451])/g, function (str,p1,offset,s) { if (A[str] != 'undefined'){return A[str];} } ).replace(/ /g,'_');//символ g использован для того чтобы заменять все пробелы, а не только первый Но это скорее костыль правильно будет так сделать: Цитата:
и new_el.value = el.value.replace(/([\u0410-\u0451 ])/g,//обратите внимание на пробел перед закрывающей квадратной скобкой. //благодаря ему и работает function (str,p1,offset,s) { if (A[str] != 'undefined'){return A[str];} } ); суть в том, что мы расширили символьный класс [\u0410-\u0451] до [\u0410-\u0451 ], добавив пробел в качестве символа для поиска для того, чтобы понять как вообще работают регулярные выражения в JS, рекомендую ознакомится со статьями http://javascript.ru/basic/regular-expression http://javascript.ru/RegExp |
Цитата:
Цитата:
Я считаю что для этой задачи такому специалисту как-то скудненько отсылать на изучение литературы, в которой только 0.0001% материала будет полезно для этого решения. Не понимаю, сложно что-ли кинуть строку как заменить в готовом скрипте " " на "_"? Я конечно благодарю Вас о такой заботе чтобы я больше знал, но как-то странно для спецов создавать такой ахиренный форум на таком ахиренном домене и постоянно в топиках произносить "RTFM"! |
заменить
Цитата:
и добавить Цитата:
|
Georgiy,
читайте внимательно для начала сообщения я написал Цитата:
более того, мой первый, "костыльный" вариант также работает, и уж его не суметь вставить у вас не могло получится PS Цитата:
|
спасибо, работает! ОГРОМНОЕ СПАСИБО!
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 22:59. |