Можно ли изменить символ, который был введен при нажатии клавиши, не делая этого вручную?
Например, если я хочу заставить заглавные буквы на основе некоторого условия, было бы неплохо сделать следующее:
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;
}
}
Конкретный недостаток с этим методом - при выборе всего входного текста и ввода ключа, если он попадает в это, он не удаляет существующий контент, а просто добавляет к содержимому, которое пользователь хотел удалить. (Необходимо было бы расследовать обнаружение любого выделенного текста для решения этого вопроса, что делает его еще более уродливым.)
Кто-нибудь может предложить лучшее решение?