Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблемы с Event'ом (https://javascript.ru/forum/events/24683-problemy-s-event%27om.html)

rafonets 10.01.2012 22:26

<html>
<head>

function tr( str )
{
	var keycode, keyChar;
	if( str.keyCode ) keycode = str.keyCode;
	else if( str.which ) keycode = str.which;

	keyChar = String.fromCharCode( keycode );
        alert("Нажат символ: "+keyChar);  // Если нажата маленькая буква "r" выводит большую "R" и т.д. со всеми буквами
}

</head>
<body>
<form action="">
<input id="undefine" type="text" name="filter_name" value="<?php echo $text_search; ?>" onfocus="if(this.value=='<?php echo $text_search; ?>')this.value = '';" onblur="if(this.value=='')this.value='<?php echo $text_search; ?>';" onkeyup="if(this.id=='ge')tr(event)" />
     
<label for="geochk"><input title="Geo" id="geochk" type="checkbox" name="geo" onclick="if(this.checked)getElementById('undefine').id='ge';else getElementById('ge').id='undefine';" /> Geo</label>

// Если пользователь активирует чекбокс с id=geochk тогда у поля поисковой формы id меняется из "undefine" на "ge", если id=ge тогда функция onkeyup срабатывает и начинает работать функция tr.
</form>
</body>
</html>


Я объясню зачем мне это все, может тогда вам станет понятнее...

На сайте материал на Грузинском языке, а это форма поиска т.е. должно быть так если пользователь ввел в input Английскую букву "a" автоматом буква становиться Грузинской. Если бы все было так просто. Набирая на Грузинском, Английскими буквами буква "t" и "T", "c" и "C" и т.д. означают совсем разные буквы. Поэтому так важно соблюдать регистр.

Ну сейчас я сделал по другому конкретно отправляю не последнюю букву которую пользователь вводил, а весь текст в инпут. Пример:
<html>
<head>

function tr( str )
{       
    str = str.replace( "EnБуква", "GeБуква" );
    str = str.replace( "EnБуква", "GeБуква" );
    // Чтобы все 33 буквы не писать по отдельности, как бы по другому это сделать через Рег. Выражение? Но тогда как понять, что будет быстрее 33 раза менять строку или рег. выражение?
    
    document.getElementById('ge').value = str;
}

</head>
<body>
<form action="">
<input id="undefine" type="text" name="filter_name" value="<?php echo $text_search; ?>" onfocus="if(this.value=='<?php echo $text_search; ?>')this.value = '';" onblur="if(this.value=='')this.value='<?php echo $text_search; ?>';" onkeyup="if(this.id=='ge')tr(this.value)" />
     
<label for="geochk"><input title="Geo" id="geochk" type="checkbox" name="geo" onclick="if(this.checked)getElementById('undefine').id='ge';else getElementById('ge').id='undefine';" /> Geo</label>
// Если пользователь активирует чекбокс с id=geochk тогда у поля поисковой формы id меняется из "undefine" на "ge", если id=ge тогда функция onkeyup срабатывает и начинает работать функция tr.
</form>
</body>
</html>

nerv_ 10.01.2012 23:12

Цитата:

Сообщение от rafonets
должно быть так если пользователь ввел в input Английскую букву "a" автоматом буква становиться Грузинской.

Сделайте таблицу соответствий и будет Вам счастье ;)

рони 11.01.2012 00:20

rafonets,
На всякий случай ....
<html>
<head>
<title>charCode example</title>

<script type="text/javascript">

function showChar(e)
{
e = (e) ? e : window.event;
var keycode = e.charCode||e.keyCode;
alert("Key Pressed: " + String.fromCharCode(keycode) + "\n"
      + "charCode: " + (keycode));
}

</script>
</head>

<body onkeypress="showChar(event);">
<p>Press any 'character' type key.</p>
</body>
</html>

rafonets 11.01.2012 11:44

Цитата:

Сообщение от nerv_ (Сообщение 149416)
Сделайте таблицу соответствий и будет Вам счастье ;)

Можно попробовать :)

Цитата:

Сообщение от рони (Сообщение 149430)
rafonets,
На всякий случай ....
<html>
<head>
<title>charCode example</title>

<script type="text/javascript">

function showChar(e)
{
e = (e) ? e : window.event;
var keycode = e.charCode||e.keyCode;
alert("Key Pressed: " + String.fromCharCode(keycode) + "\n"
      + "charCode: " + (keycode));
}

</script>
</head>

<body onkeypress="showChar(event);">
<p>Press any 'character' type key.</p>
</body>
</html>

Странно но ваш вариант отображает символы как надо, тока вот разница в чем onkeypress, срабатывает при нажатии клавиши, в onkeyup, когда уже отпускаешь клавишу. Возможно ошибка в onkeyup :)

rafonets 11.01.2012 12:40

Мдаа.... Возникла еще одна проблема, вчера все было нормально, но почему-то теперь вместо грузинских символов, что-то виде "бѓ‘", "бѓђ", :blink: код не трогал, кодировку не трогал, как вчера было так и сейчас.

Чем дальше тем интереснее :D похоже проблема только в Google Chrome

Проблему решил удалением куков браузера :)


ТЕМА ЗАКРЫТА !


Часовой пояс GMT +3, время: 16:32.