snowlander
Member
- Регистрация
- 29.07.2008
- Сообщения
- 10
Имеется два готовых скрипта, каждый из которых работает отлично. А именно, первый: ищет все id элементов на странице и заносит их в массив, по onclick выводит id активного (в фокусе) элемента. А второй: вставляет заданный текст по onclick в текстовую область, имеющую собственный id. Задача: вставить текст в активную текстовую область (находящуюся в фокусе в данный момент).
Первый скрипт:
Например, по нажатию на элемент скрипт выводит сообщение с id активного элемента, т.е. находящегося в фокусе.
Второй скрипт:
Например, скрипт вписывает в текстовую область текст UserText.
Как объединить эти два скрипта, чтобы можно было по onclick вписывать пользовательский текст в активную текстовую область, находящуюся в фокусе в данный момент?
Первый скрипт:
Код:
<script language="JavaScript"><!--
window.onload = init;
function init () {
document.activeElement = document.body;
var all = document.body.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
var functionBody = 'document.activeElement = this;';
var oldOnFocus = all[i].getAttribute('onfocus');
if (oldOnFocus)
functionBody += oldOnFocus;
all[i].onfocus = new Function ('event', functionBody);
}
}
// --></script>
...
<textarea id="textareaID1" name="textarea1" rows=5 cols=40 onclick="alert(document.activeElement.id)"></textarea>
<textarea id="textareaID2" name="textarea2" rows=3 cols=40 onclick="alert(document.activeElement.id)"></textarea>
<textarea id="textareaID3" name="textarea3" rows=3 cols=20 onclick="alert(document.activeElement.id)"></textarea>
<input type="button" id="buttonID1" value="1" onclick="alert(document.activeElement.id)">
Второй скрипт:
Код:
<script language="JavaScript"><!--
name="textareaID";
cursor = 0;
function obj() {
str = document.getElementById(name);
}
function position()
{
if (!document.selection) { cursor = str.selectionStart; }
}
function InsertText(text)
{
if(navigator.userAgent.indexOf('Opera')==-1) { str.focus(); }
if (document.selection) { document.selection.createRange().text = ' ' + text + ' '; }
else
{
var strFirst = str.value.substr(0, cursor);
var strEnd = str.value.substr(cursor, str.value.length);
if(strFirst=='') { var raz1 = ' '; var raz2 = ' '; var num = 1; }
else
{
var raz1 = ''; var raz2 = ''; var num = 0;
if (!/^.*(\s{1,})$/.test(strFirst)) { raz1 = " "; num++; }
if (!/^(\s{1,}).*$/.test(strEnd)) { raz2 = " "; num++; }
}
str.value = strFirst + raz1 + text + raz2 + strEnd;
cursor = strFirst.length + text.length + num;
str.selectionStart = str.selectionEnd = cursor;
}
}
// --></script>
...
<textarea id="textareaID" name="textarea1" rows=5 cols=40></textarea> <input type="button" value="4" onclick='position();InsertText("UserText")'>
...
<script language="JavaScript" type="text/javascript">
<!--
obj();
// -->
</script>
Как объединить эти два скрипта, чтобы можно было по onclick вписывать пользовательский текст в активную текстовую область, находящуюся в фокусе в данный момент?