Динамическое добавление обработчика событий в JavaScript
От: Аноним  
Дата: 15.02.03 10:43
Оценка:
Люди, помогите

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">

<style>
      a.shortcut {text-decoration:none;font-size:10px;}
      a.shortcut:visited {text-decoration:none;}
</style>

<script language="JavaScript1.2"> <!--

var lostForm = 0; //индекс формы, которой принадлежит элемент потерявший фокус
var lostInput = 0; //индекс элемента, потерявшего фокус

//Функция, которая динамически добывляет обработчик события onBlur ко всем элементам ввода
function genOnBlur() {
  var j = 0;
  var i = 0;
  for(j=0; j< document.forms.length; j++) {
    for(i=0; i < document.forms[j].elements.length; i++) {
       document.forms[j].elements[i].onBlur = loseFocus(j,i);
    }
  }
  lostForm = 0;
  lostInput = 0;
}

//Функция, которая присваивает глобальным переменным lostForm и lostInput значения элемента потерявшего фокус
function loseFocus(formIndex,inpIndex) {
   lostForm = formIndex;
   lostInput = inpIndex;
}

//Функция, которая добавляет tag в поле ввода
function addTag(tagName) {
    var val = document.forms[lostForm].elements[lostInput].value;
    val = val + tagName;
    document.forms[lostForm].elements[lostInput].value = val;
}

//Создаем панель форматирования текста
function addBar() {
    document.all.bar.innerHTML = "";
    str = "<a href=\"javascript:addTag('<BR>')\" class=\"shortcut\">Перенос строки</a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('<B></B>')\" class=\"shortcut\"><b>B</b></a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('<I></I>')\" class=\"shortcut\"><I>I</I></a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('<U></U>')\" class=\"shortcut\"><U>U</U></a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('<SUP></SUP>')\" class=\"shortcut\">A<sup>2</sup></a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('<SUB></SUB>')\" class=\"shortcut\">A<sub>2</sub></a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('&laquo;')\" class=\"shortcut\">&laquo;</a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('&raquo;')\" class=\"shortcut\">&raquo;</a>&nbsp;|&nbsp;";
    str += "<a href=\"javascript:addTag('&mdash;')\" class=\"shortcut\">&mdash;</a>&nbsp;|&nbsp;";
    document.all.bar.innerHTML = str;
}  
-->
</script>

</HEAD>

<body onload="addBar(); genOnBlur();">
<div id="bar"></div>
<form action="" name="form1" method="post">
  <input type="text" name="inp1" value=""><br>
  <textarea cols="25" rows="5" name="txt1"></textarea><BR>
  <INPUT TYPE="reset">
</form>
</body>
</html>


Не работает
Re: Динамическое добавление обработчика событий в JavaScript
От: uzzy Россия  
Дата: 15.02.03 11:11
Оценка:
Здравствуйте, Аноним, Вы писали:

что именно не работает ????

А>Люди, помогите

А><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
А><HTML>
А><HEAD>
А><TITLE> New Document </TITLE>
А><META NAME="Generator" CONTENT="EditPlus">
А><META NAME="Author" CONTENT="">
А><META NAME="Keywords" CONTENT="">
А><META NAME="Description" CONTENT="">

А><style>

А> a.shortcut {text-decoration:none;font-size:10px;}
А> a.shortcut:visited {text-decoration:none;}
А></style>

А><script language="JavaScript1.2"> <!--


А>var lostForm = 0; //индекс формы, которой принадлежит элемент потерявший фокус

А>var lostInput = 0; //индекс элемента, потерявшего фокус

А>//Функция, которая динамически добывляет обработчик события onBlur ко всем элементам ввода

А>function genOnBlur() {
А> var j = 0;
А> var i = 0;
А> for(j=0; j< document.forms.length; j++) {
А> for(i=0; i < document.forms[j].elements.length; i++) {
А> document.forms[j].elements[i].onBlur = loseFocus(j,i);
поробуй document.forms[j].elements[i].onBlur = loseFocus;
А> }
А> }
А> lostForm = 0;
А> lostInput = 0;
А>}

А>//Функция, которая присваивает глобальным переменным lostForm и lostInput значения элемента потерявшего фокус

А>function loseFocus(formIndex,inpIndex) {
А> lostForm = formIndex;
А> lostInput = inpIndex;
А>}
не коректно!!!
function loseFocus(evnt) 
{
 // Здесь нада определить какой объект послал Event
 // то есть типа
 if (document.all)
 {
    // Для NN
    evntobj = evnt.srcElement;  
 }
 else
 {
    // Для IE
    evntobj = evnt.target;  
 }
 // дальше легко достаточн определить является ли объект сыном формы, если да то и за одно какой.
}
Re[2]: поправка
От: uzzy Россия  
Дата: 15.02.03 18:35
Оценка:
U>не коректно!!!
U>
U>function loseFocus(evnt) 
U>{
U> // Здесь нада определить какой объект послал Event
U> // то есть типа
U> if (document.all)
U> {
U>    // Для NN
нада  // Для IE
U>    evntobj = evnt.srcElement;  
U> }
U> else
U> {
U>    // Для IE
нада  // Для NN
U>    evntobj = evnt.target;  
U> }
U> // дальше легко достаточн определить является ли объект сыном формы, если да то и за одно какой.
U>}
U>

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.