 
			
				12.09.2009, 21:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2009 
					
					
					
						Сообщений: 35
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Динамичная транслитерация рус-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>
подскажите как нужно дополнить скрипт, чтобы при вводе пробела, он был заменён на _ (нижнее подчёркивание).
 
Цель: для ЧПУ  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.09.2009, 22:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Матрос 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2008 
					
					
					
						Сообщений: 6,246
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Здравствуйте! 
Судя по вашему сообщению, вы ну совсем не знаете javascript. 
 
Освойте основы языка и вопрос отпадет сам, полностью или частично.  
А с чем не справитесь - поможем.
 
На сайте javascript можно начать изучать с учебника, раздел  Основы javascript. 
Возможно, вам также понадобится HTML - учебник есть, например, здесь:  http://ru.html.net/tutorials/html/
Задавайте конкретные вопросы по ходу дела.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 10:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2009 
					
					
					
						Сообщений: 35
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Gvozd
			 
		
	 | 
 
	
		Здравствуйте! 
 
Судя по вашему сообщению, вы ну совсем не знаете javascript.  
 
Задавайте конкретные вопросы по ходу дела.
	 | 
 
	
 
 Это точно - не знаю. Очень хочу изучить, но всё как-то пока не получается подойти к этому предмету... только подкрастся и взять какой-нить готовый скрипт - благо их сейчас много, однако в таких ситуациях как эта - нужно уметь исправить, а для этой ситуации - есть этот форум. Помню как-то на этом форуме мне подсказали, и я врубился в ту конкретную тему и теперь то что уже прошёл - знаю в javascript. Может так и научусь половине  
Относительно этого скрипта - не понятно зачем Вы мне рекомендуете изучать html. Помоему он здесь в данном случае не нужен вовсе. Если поставить  
A[" "]="_";
  то ничего не выйдет - я это без особых знаний понимаю и даже не пробовал этот вариант. Наивно попробовал  
A[" "]="_";
  - конечно не сработало. Пробел это же символ и его нужно указать. Потом я обнаружил, что если я перенесу строку, транслитерация также перенесётся синхронно на следующую строчку. Я прикинул что отвечает за это скорее всего строчка  
new_el.value = el.value.replace(/([\u0410-\u0451])/g,
 
- но могу ошибаться..
 
А так как таких ньюансов я не ведаю, решил опоститься здесь чтобы мне кинули строчку символов обозначающую пробел и замены его на _ 
видел функцию str.replace(' ','_') но даже пробовать не рискнул - в js не так всё просто...  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 11:31
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Рассеянный профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2009 
					
					
					
						Сообщений: 2,379
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		не понятно зачем Вы мне рекомендуете изучать html
	 | 
 
	
 
 это RTFM.
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		видел функцию str.replace(' ','_') но даже пробовать не рискнул - в js не так всё просто...
	 | 
 
	
 
 попробуй.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 11:47
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Матрос 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2008 
					
					
					
						Сообщений: 6,246
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		и даже не пробовал этот вариант.
	 | 
 
	
 
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		даже пробовать не рискнул
	 | 
 
	
 
 что ж вы такой не уверенный-то?) 
от того, что вы попробуете пускай даже бредовую идею, ничего страшного тут не случится
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		видел функцию str.replace(' ','_')
	 | 
 
	
 
 ну, вполне можно было использовать 
только в виде:
 
new_el.value = el.value.replace(/([\u0410-\u0451])/g,
            function (str,p1,offset,s) {
                if (A[str] != 'undefined'){return A[str];}
            }
        ).replace(/ /g,'_');//символ g использован для того чтобы заменять все пробелы, а не только первый
Но это скорее костыль 
правильно будет так сделать:
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		A[" "]="_";
	 | 
 
	
 
 (вы двигались в верном направлении) 
и 
 
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 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 13:42
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2009 
					
					
					
						Сообщений: 35
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Gvozd
			 
		
	 | 
 
	| 
		что ж вы такой не уверенный-то?)
	 | 
 
	
 
 Опыт. Когда cуёшся без консультации в тему которую не понимаешь - потратишь много времени. А я из-за своей упрямости если засяду, то вылезу на второй день, но сделаю. Вот этой глупой потери времени мне не нужно, если есть тематические форумы.
 Прекрасно. Поставил пробел и теперь происходит замена на "ничто". 
Я считаю что для этой задачи такому специалисту как-то скудненько отсылать на изучение литературы, в которой только 0.0001% материала будет полезно для этого решения.
 
Не понимаю, сложно что-ли кинуть строку как заменить в готовом скрипте " " на "_"? Я конечно благодарю Вас о такой заботе чтобы я больше знал, но как-то странно для спецов создавать такой ахиренный форум на таком ахиренном домене и постоянно в топиках произносить "RTFM"!  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 14:20
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Рассеянный профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2009 
					
					
					
						Сообщений: 2,379
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		заменить 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		\u0410-\u0451
	 | 
 
	
 
 на [\u0020\u0410-\u0451] 
и добавить
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		A[" "]="_";
	 | 
 
	
 
 вроде должно заработать.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 15:02
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Матрос 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2008 
					
					
					
						Сообщений: 6,246
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Georgiy, 
читайте внимательно для начала сообщения 
я написал
 
	
 
	| 
		
			Сообщение от Gvozd
			
		
	 | 
 
	
		правильно будет так сделать: 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		A[" "]="_";
	 | 
 
	
 
 (вы двигались в верном направлении) 
и  
new_el.value = el.value.replace(/([\u0410-\u0451 ])/g,//обратите внимание на пробел перед закрывающей квадратной скобкой.
                                                                          //благодаря ему и работает
            function (str,p1,offset,s) {
                if (A[str] != 'undefined'){return A[str];}
            }
        );
	 | 
 
	
 
 частичка  и указывает на то, что выполнить надо оба действия
 
более того, мой первый, "костыльный" вариант также работает, и уж его не суметь вставить у вас не могло получится
 
PS
 
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		как-то странно для спецов создавать такой ахиренный форум на таком ахиренном домене и постоянно в топиках произносить "RTFM"!
	 | 
 
	
 
 http://phpclub.ru/faq/WhyForum 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 15:29
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2009 
					
					
					
						Сообщений: 35
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		спасибо, работает! ОГРОМНОЕ СПАСИБО! 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Форум нужен для того, чтобы Вы САМИ нашли ответ на свой вопрос.
	 | 
 
	
 
 Согласен. Поэтому мы пользователи стараемся называть темы топиков как можно детальнее, и раскрывать сущность вопроса сжато и подробно, чтобы другие пользователи могли найти ваш прекрасный форум в поисковиках, тем самым поднимая рейтинг форума и быть жутко благодарными за найденный ответ. Я всегда стараюсь сначала найти по разным ключевикам похожую проблему, а если не нахожу, универсалю тему и тем самым получаю ответ, который послужит другим пользователям. Тем кто задаёт вопросы до поиска вопросы, или просто ленятся, или на сайте какая-нибудь муть с поиском.
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Форум нужен для того, чтобы Вы САМИ опубликовали на нем ответ на вопрос, интересный многим.
	 | 
 
	
 
 Согласен. Потому считаю разводить темы типа "смотри документацию" со ссылкой на скачивание целой книги на конкретный вопрос крайне нерационально. Кто не любит свою сферу деятельности - тот всегда молчит. Кто уважает программирование, с радостью погоняет импульсы по нейронам.
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Форум НЕ предназначен для того, чтобы КТО-ТО нашёл за Вас ответ на Ваш вопрос или решил за Вас Вашу проблему. 
	 | 
 
	
 
 Этот тезис логически противоречит двум вышесказанным. Как-то один знакомый сказал (не в обиду) - "хочешь секса в гамаке стоя на лыжах, напевая песню "Матушка Россия" в обратном порядке, - учавствуй на форуме phpclub.ru"  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.09.2009, 17:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Рассеянный профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2009 
					
					
					
						Сообщений: 2,379
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Georgiy
			
		
	 | 
 
	| 
		Этот тезис логически противоречит двум вышесказанным.
	 | 
 
	
 
 Смотря как их понимать, первый можно понимать так: возникает интересный вопрос, спрашиваешь на форуме и !сам! продолжаешь искать, далее отвечаешь на свой же вопрос. Второй тезис можно понимать так же. Теперь ничто ничему не противоречит.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |