Можно ли изменить символ, который был введен при нажатии клавиши, не делая это вручную?
Например, если я хочу ввести прописные буквы на основе некоторого условия , этобыло бы неплохо сделать следующее:
function onKeypressHandler(e)
{
if ( condition )
{
e.which -= 32;
}
}
Но, конечно, это не работает.
ПРИМЕЧАНИЕ: Это , а не через верхний регистр, но только определенные символы.
Может быть, я хочу сказать if ( e.which >= 97 && e.which <= 102 )
или if ( Wind.Direction == 'South' )
или что-то еще - само условие не важно, но верхний регистр должен применяться только к текущему символу , а не ко всему вводу.
Я могу сделать это вручную, добавив измененный символ, но это уродливый и грязный способ сделать это, и, вероятно, медленнее, чем могло бы быть.
function onKeypressHandler(e)
{
if ( condition )
{
$j(this).val( $j(this).val() + String.fromCharCode( e.which - 32 ) );
return false;
}
}
Конкретный недостаток этого метода - если выбрать всевведите текст и введите ключ, если он попадает в него, он не удаляет существующий контент, а просто добавляет контент, который пользователь хотел удалить.(Нужно изучить обнаружение любого выделенного текста, чтобы решить это, что делает этот текст еще более уродливым.)
Может кто-нибудь предложить лучшее решение?