Последовательное Замкнутое Переключение Регистра Выделенного Пользователем Текста
ЦЕЛЬ: Последовательное замкнутое переключение регистра выделенного пользователем текста клавишами ВВЕРХ, ВНИЗ.
1) Например, есть текст: Установлено, что смесь двух изотопов, дейтерия и трития, требует меньше энергии для реакции синтеза по сравнению с энергией, выделяемой во время реакции. 2) Выделяем мышкой: смесь двух изотопов 3) Нажимаем клавишу ВВЕРХ: Первое нажатие -> Смесь двух изотопов Второе нажатие -> СМЕСЬ ДВУХ ИЗОТОПОВ Третье нажатие -> смесь двух изотопов и тд ... -> замкнутое переключение. При этом само выделение не должно сниматься во время переключений! 4) Если же нажимать клавишу ВНИЗ, то смена регистра будет происходить в обратном порядке: ВЕРХНИЙ РЕГИСТР -> Как в предложениях -> нижний регистр ->... Я пробовал изменить регистр выделения клавишей Enter, но не получилось:
document.onkeyup = function (e) {
if (e.keyCode == 13) {
var selection = window.getSelection()
if (selection.style.textTransform = 'inherit') {
selection.style.textTransform = 'uppercase';
}
else {
selection.style.textTransform = 'inherit';
}
return false;
}
}
Надеюсь на Вашу помощь, уважаемые программисты! |
Где же вы где?
|
Это напряжно.)
|
Это вопрос или заказ?
|
<!DOCTYPE html>
<html>
<body>
<div id="inset">Установлено, что смесь двух изотопов, дейтерия и трития, требует меньше энергии для реакции синтеза по сравнению с энергией, выделяемой во время реакции.</div>
<script>
String.prototype.capitalize = function () {
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
}
Math.mod = function(a, b) {
return (b + (a % b)) % b;
};
(function() {
var actions = ['toUpperCase', 'capitalize', 'toLowerCase'];
var selection = window.getSelection();
actions.currentIndex = -1;
actions.key = { 38: 'prev', 40: 'next' };
actions.next = function() {
return actions[actions.currentIndex = Math.mod(++actions.currentIndex, actions.length)];
};
actions.prev = function() {
return actions[actions.currentIndex = Math.mod(--actions.currentIndex, actions.length)];
};
document.addEventListener('selectstart', function(event) {
actions.currentIndex = -1;
// var selection = window.getSelection();
return false;
});
document.addEventListener('keyup', function(event) {
event.preventDefault();
if(!selection) return;
switch(event.keyCode) {
case 38: case 40:
var string = selection.toString();
if (selection.rangeCount) {
var range = selection.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(string[actions[actions.key[event.keyCode]]()]()));
selection.addRange(range);
}
}
return false;
});
})();
</script>
</body>
</html>
|
Malleys,
строка 28 зачем? |
Цитата:
|
Ну вы даёте, мужики! Мастера! :) :write:
Какие еще будут предложения? Можно ли этот скрипт минимизировать? |
на всякий случай скрипт выше разрушает html :-?
|
Цитата:
inset.innerHTML = inset.innerHTMLТекст опять как одна textNode, но ещё зачем-то 58 пустых |
| Часовой пояс GMT +3, время: 03:31. |