Подскажите, пожалуйста, как вызвать функцию (исправление раскладки Ru->En) в заданной области <textarea>?
Граница области задаётся окаймляющей парой: [math],[/math]. То есть нужно, чтобы функция вызывалась только, когда курсор находится между [math] и [/math].
С исправлением раскладки во всей <textarea> почти нет проблем (не пашет в IE)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=content-type content="text/html; charset=utf-8">
<script type=text/javascript>
String.prototype.reverseRuEnLayout = (function()
{
var L = {'А':'F','а':'f','Б':'<','б':'\,','В':'D','в':'d','Г':'U','г':'u',
'Д':'L','д':'l','Е':'T','е':'t','Ё':'~','ё':'`','Ж':';','ж':';',
'З':'P','з':'p','И':'B','и':'b','Й':'Q','й':'q','К':'R','к':'r',
'Л':'K','л':'k','М':'V','м':'v','Н':'Y','н':'y','О':'J','о':'j',
'П':'G','п':'g','Р':'H','р':'h','С':'C','с':'c','Т':'N','т':'n',
'У':'E','у':'e','Ф':'A','ф':'a','Х':'{','х':'[','Ц':'W','ц':'w',
'Ч':'X','ч':'x','Ш':'I','ш':'i','Щ':'O','щ':'o','Ъ':'}','ъ':']',
'Ы':'S','ы':'s','Ь':'M','ь':'m','Э':'\'','э':'\'','Ю':'>','ю':'\.',
'Я':'Z','я':'z','/':'|',':':'^','?':'&' //некоторые символы специально не учтены
},
r = '', k;
for (k in L) r += k;
r = new RegExp('[' + r + ']', 'g');
k = function(a){return a in L ? L[a] : '';};
return function() {return this.replace(r, k);
onpropertychange="document.getElementById('abcd').value = this.value.reverseRuEnLayout()"
};
})();
</script>
</head>
<body>
<textarea style="margin-left: 50px; width: 400px; height: 100px;" id="abcd"
oninput="document.getElementById('abcd').value = this.value.reverseRuEnLayout()">
</textarea>
</body>
</html>
Нашел на этом форуме,
как получить курсор в textarea, но использовать это не получается.