javascript (маленькие и большие символы)

yura1985
Дата: 24.03.2010 15:21:49
Добрый день всезнающий пипл....
Подскажите пожалуйста как в javascript поменять маленькие буквы на большие, но так что бы символ который нажали тоже менялся:

document.getElementById(text).value= document.getElementById(text).value.toUpperCase() -- все супер, только меняет все кроме последнего символа....


Я так понимаю нужно как то так....:
document.getElementById(text).value= document.getElementById(text).value.toUpperCase()+window.event.toUpperCase()

Не могу найти функцию, которая после нажатия на символ вернет сам символ, а не его код
window.event.keyCode.....

Короче, как сделать чтоб по нажатию на кнопку в маленьком регистре, вывод был в большом????
(Ответ нажми КапсЛок -- не подходит :) )
ShSerge
Дата: 24.03.2010 15:23:25
Надо смотреть событие keyup.
Яростный Меч
Дата: 24.03.2010 15:27:44
yura1985
document.getElementById(text).value= document.getElementById(text).value.toUpperCase() -- все супер, только меняет все кроме последнего символа....
Это, как я понимаю, в обработчике нажатия клавиатуры.

попробуйте
document.getElementById(text).value= document.getElementById(text).value.toUpperCase();
заменить на
setTimeout(function(){document.getElementById(text).value= document.getElementById(text).value.toUpperCase();}, 1);
yura1985
Дата: 24.03.2010 15:38:44
Ответ Яростного Меча -- выиграл.
По keyup - тот же результа.
Я вот только думаю, ничего страшного в том, что таймер стоит????
Во всех браузерах сработает???
Яростный Меч
Дата: 24.03.2010 15:47:59
yura1985
Я вот только думаю, ничего страшного в том, что таймер стоит????
Во всех браузерах сработает???
Вроде кроссбраузерная штука.
Только вот если курсор находится не в конце строки (например, вы что-то меняете в середине), то после присвоения он может уйти в конец. Тогда надо переустанавливать обратно (как работать с курсором, вы уже знаете :))
Зритель с попкорном 5
Дата: 24.03.2010 17:12:46
yura1985,

А Вам зачем? вы этими данными будете оперировать на клиенте или на сервере?

если на сервере то могу предложить небольшую "обманку" которая не потребует JavaScript и, по мне, реализовано несколько изящнее что-ли:

допустим на странице имеем
<input type="text" class="uppercase" />
тогда в CSS прописываем
input.uppercase { text-transform: uppercase; }
и наслаждаемся "большими" буквами, только не забываем уже на сервере сделать ToUpper() для полученного текста, т.к. он только выглядит "большим", а на самом деле такой каким вводили
ShSerge
Дата: 24.03.2010 17:35:17
Зритель с попкорном 5,

+1
Это хорошо ещё тем, что копипастинг работает. :)
yura1985
Дата: 24.03.2010 19:46:25
не копипастинг.... точно не нужен.... предназначено для сенсорного экрана....
А большая буква нужна для быстроты ввода, человек вводит фамилию, ему раз и Большая буква.
Я конечно мог бы и на сервере обработать..... по пользователь то не знает что оно на сервере обработается (и будет на шифт жать, судорожно искать капс лок на сенсорной клаве)..... так что только клиент...
Зритель с попкорном 5
Дата: 24.03.2010 19:54:30
yura1985
не копипастинг.... точно не нужен.... предназначено для сенсорного экрана....
А большая буква нужна для быстроты ввода, человек вводит фамилию, ему раз и Большая буква.
Я конечно мог бы и на сервере обработать..... по пользователь то не знает что оно на сервере обработается (и будет на шифт жать, судорожно искать капс лок на сенсорной клаве)..... так что только клиент...


если вы сделаете это на JavaScript по keyup то пользователь точно также будет судорожно жать SHIFT или искать CAPS LOCK, чего-то я не допонимаю в ваших рассуждениях, кроме того - даже если вдруг эти данные нужны вам на клиенте, то ничто не мешает использовать CSS для отображения и .toUpperCase() перед использованием
yura1985
Дата: 24.03.2010 20:28:54
setTimeout(function(){document.getElementById(text).value= document.getElementById(text).value.toUpperCase();}, 1); -- решил все вопросы