У меня есть экранная клавиатура для более безопасного ввода паролей.
Сама клавиатура расположена так:
<div class="teclado_grafico" id="teclado_grafico">
<a class="tecla_teclado" onmousedown="teclaAction( this, 'caja_selector'); return false" style="top: 0px; left: 0px;">Q</a>
<a class="tecla_teclado" onmousedown="teclaAction( this, 'caja_selector'); return false" style="top: 0px; left: 28px;">W</a>
.
.
.
</div>
И у него есть «кнопка Shift», которая запускает функцию JS с этим (я уже все это пробовал):
if (obj.innerHTML == "Mayus.") {
try {
MAYUSCULA_ACTIVADO = !MAYUSCULA_ACTIVADO;
var tgrafico = document.getElementById("teclado_grafico");
if(MAYUSCULA_ACTIVADO) {
// tgrafico.className = "teclado_grafico mayuscula";
// $("#teclado_grafico").removeClass('minuscula').addClass('mayuscula');
// $("#teclado_grafico").attr('class', 'teclado_grafico mayuscula');
// $("#teclado_grafico").attr('className', 'teclado_grafico mayuscula');
tgrafico.setAttribute('className', "teclado_grafico mayuscula") ||
tgrafico.setAttribute('class', "teclado_grafico mayuscula");
} else {
// tgrafico.className = "teclado_grafico minuscula";
// $("#teclado_grafico").removeClass('mayuscula').addClass('minuscula');
// $("#teclado_grafico").attr('class', 'teclado_grafico minuscula');
// $("#teclado_grafico").attr('className', 'teclado_grafico minuscula');
tgrafico.setAttribute('className', "teclado_grafico minuscula") ||
tgrafico.setAttribute('class', "teclado_grafico minuscula");
}
} catch (_E) {
//void
}
return;
}
Связанный CSS выглядит так:
.mayuscula a.tecla_teclado{
text-transform: uppercase;
}
.minuscula a.tecla_teclado{
text-transform: lowercase;
}
Он работает на каждом браузере, который я пробовал. IE 6, 7; Опера 10; GChrome; FF 3, 3,5 и 3,6; Safari 4, ... но в IE8 v8 (строгий режим) класс не изменился! Я имею в виду, debuggin 'с инструментами IE8 позволяет увидеть, что атрибут className есть и он меняется ... но пользователь не видит, как буквы меняются с прописных на строчные и снова на прописные.
Я просто не знаю, как с этим справиться ... У меня были жалобы на клиента, использующего IE6 ... теперь они обновили свои материалы, и это появляется. Любая помощь будет очень полезна!
РЕДАКТИРОВАТЬ Уже пробовал предложения
tgrafico.className = MAYUSCULA_ACTIVADO ? "teclado_grafico mayuscula" : "teclado_grafico minuscula";
но радости пока нет. Открытие инструментов IE8 dev позволяет увидеть на вкладке HTML, что класс корректно изменяется между ожидаемыми значениями, но браузер просто не ведет себя!