Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JavaScript / 12 сообщений из 12, страница 1 из 1
11.03.2004, 18:45
    #32438760
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Есть HTML форма 3-мя полями для ввода типа "text". К первому на событие "onchange" привязана функция, пересчитывающая значение второго поля. На второе поле на событие "onchange", тоже привязана функция, пересчитывающая значение третьего поля. Так вот, при изменении первого поля второе пересчитывается, а вот третье - нет, т.е.функция обновления второго поля не вызывает события "onchange". Вопрос КАК БЫТЬ ?????
...
Рейтинг: 0 / 0
11.03.2004, 19:10
    #32438796
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Дык ё-мое. Вручную вызови из первой ф-ции вторую и все у тебя будет отлично
...
Рейтинг: 0 / 0
11.03.2004, 19:17
    #32438803
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Дак если бы руками это все делалося.... А то форма у меня эта со всеми функциями генерится процедурой хранимой.... И определить, какое поле в какую функцию входит, не представляется возможным (в первом приближении)
...
Рейтинг: 0 / 0
11.03.2004, 19:30
    #32438814
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Так вопрос про JavaScript?

Разбери хранимую процедуру и сделай, как советует Я
...
Рейтинг: 0 / 0
11.03.2004, 19:33
    #32438819
chack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
В функцию можно передать имя элемента или ID (this.name или this.id)
И в зависимости от этого значения выполнять разные действия.
...
Рейтинг: 0 / 0
11.03.2004, 19:36
    #32438823
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
2 23a77

Подумал, и понял, что ничего не понимаю, в чем вопрос.

Если форма генерится хранимой процедурой, что же ты можешь изменить, кроме хранимой процедуры?

И неясна архитектура системы, как всё это делается.

Правильно заданый вопрос 90% успеха
...
Рейтинг: 0 / 0
11.03.2004, 21:47
    #32438913
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Сейчас попробую угадать, у тебя в функции (которая в onchange), нужно получить значение, которое ввел юзер в первом поле. Его передать в БД, выполнить с ним определенные операции, вернуть результат, который надо вставить во второе поле.
Если я правильно описал - то так нельзя сделать (не считая варианта с java-апплетами или activeX). Еcли не угадал, то покажи полученный javascript
(не твою ХП а именно результирующий javascript)
...
Рейтинг: 0 / 0
12.03.2004, 09:24
    #32439144
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
автор=23a77
Так вот, при изменении первого поля второе пересчитывается, а вот третье - нет

Ты не совсем правильно понимаешь как работает событие onchange.

Событие onchage генерируется не просто при изменении значения текстового поля, а в момент выхода из этого поля.

Поэтому естественно, что если ты покидаешь изменённое поле 1 - у тебя выполняется функция , которую ты повесил на onchage для 1-го поля.

Что-бы отработало onchage для поля 2, нужно изменить его значение и выйти из него.
...
Рейтинг: 0 / 0
12.03.2004, 09:44
    #32439170
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Вот пример, того что ты хочешь.
Зайди в перове поле, измени значение, выйди из него.

После выхода отработает function Change1. В ней изменяется значения поля 2 и делается генерация события onchage, которое отрабатывается вызовом функции Change2. В этой функции также изменяется значение поле 3 и генерация события onchange, которое отрабатывается вызовом функции Change3, в котрой просто делается alert().


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<html>
 <head>
  <script language= "JavaScript" >
   function Change1(p_value)
   {
    document.all.control2.value = document.all.control2.value+p_value;
    document.all.control2.onchange();
   }

   function Change2()
   {
    document.all.control3.value = document.all.control3.value+document.all.control2.value;
    document.all.control3.onchange();
   }

   function Change3()
   {
    alert(document.all.control3.value);
   }
  </script>
</head>

<body>
 <form>
 <input type=text id= "control1"  value= "1 " onchange= "Change1(value);" >
 <input type= "text"  id= "control2"  value= "2 " onchange= "Change2();" >
 <input type= "text"  id= "control3"  value= "3 " onchange= "Change3();" >
 </form>
</body>
</html>
...
Рейтинг: 0 / 0
12.03.2004, 11:13
    #32439393
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Итак привожу код самой простой сгенеренной HTML.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4 . 0 //EN>"
 "http://www.w3.org/TR/REC-html40/strict.dtd" >
<HTML>
<HEAD>
<META HTTP-EQUIV= "Content-Type"  content= "text/html" ; CHARSET= "windows-1251 ">
<META HTTP-EQUIV= "Content-Language"  content= "ru" >
</HEAD>
<TITLE>Ф- 4 - 3  :редактирование</TITLE>
<SCRIPT>
function IsNumber(val) {if (!isNaN(parseFloat(val))) {return parseFloat(val)} else {alert(val+ ": Ошибочное значение !" );return  0 }}
function IsString(str) {var i= 0 , j=str.length; while (str.substring(i,i+ 1 )== " " ) {i++}; while (str.substring(j- 1 ,j)== " " ) {j --}; return str.substring(i,j)}
 
function F_A0400() {REPORT.A0400.value=(parseFloat(REPORT.A0410.value)+parseFloat(REPORT.A0420.value)+parseFloat(REPORT.A0430.value)+parseFloat(REPORT.A0440.value))}
function F_A0450() {REPORT.A0450.value=parseFloat(REPORT.A0350.value)+parseFloat(REPORT.A0360.value)-parseFloat(REPORT.A0400.value)}
function F_A0360() {REPORT.A0360.value=(parseFloat(REPORT.A0370.value)+parseFloat(REPORT.A0380.value)+parseFloat(REPORT.A0390.value))}
</SCRIPT>
<BODY>
<FORM NAME= "REPORT"  METHOD= "POST" >
<TABLE align= "center"  border= "1 ">
<TR>
<TD align= "center"  valign= "middle"  width= 121  height= 45  bgcolor= "#00FFFF" ><B> 205 ; 224 ; 232 ; 236 ; 229 ; 237 ; 238 ; 226 ; 224 ; 237 ; 232 ; 229 ;  241 ; 242 ; 240 ; 238 ; 234 ; 232 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 45  bgcolor= "#00FFFF" ><B> 202 ; 238 ; 228 ;  241 ; 242 ; 240 ; 238 ; 234 ; 232 ;</TD>
<TD align= "center"  valign= "middle"  width= 135  height= 45  bgcolor= "#00FFFF" ><B> 202 ; 224 ; 241 ; 241 ; 238 ; 226 ; 238 ; 229 ;  232 ; 241 ; 239 ; 238 ; 235 ; 237 ; 229 ; 237 ; 232 ; 229 ;</TD>
</TR>
<TR>
<TD align= "center"  valign= "middle"  width= 121  height= 15  bgcolor= "#C0C0C0" ><B> 1 </TD>
<TD align= "center"  valign= "middle"  width= 78  height= 15  bgcolor= "#C0C0C0" ><B> 2 </TD>
<TD align= "center"  valign= "middle"  width= 135  height= 15  bgcolor= "#C0C0C0" ><B> 3 </TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 30  bgcolor= "#FFFF00" > 206 ; 241 ; 242 ; 224 ; 242 ; 238 ; 242 ; 234 ;  237 ; 224 ;  237 ; 224 ; 247 ; 224 ; 235 ; 238 ;  227 ; 238 ; 228 ; 224 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 30  bgcolor= "#FFFF00" ><B> 350 </TD>
<TD align= "right"  valign= "top"  bgcolor= "#FFFF00" ><INPUT size= 12  type= "text"  name= "A0350"  value= "580690 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0450()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 20 > 207 ; 238 ; 241 ; 242 ; 243 ; 239 ; 232 ; 235 ; 238 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 20 ><B> 360 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0360"  value= "88014489 " READONLY= "TRUE"  maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0450()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 15 > 226 ;  242 ; 238 ; 236 ;  247 ; 232 ; 241 ; 235 ; 229 ;  239 ; 238 ;  226 ; 232 ; 228 ; 224 ; 236 ;:</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 15 ><B></TD>
<TD align= "right"  valign= "top"  width= 135  height= 15 ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 20 ></TD>
<TD align= "center"  valign= "middle"  width= 78  height= 20 ><B> 370 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0370"  value= "87967392 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0360()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 21 ></TD>
<TD align= "center"  valign= "middle"  width= 78  height= 21 ><B> 380 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0380"  value= "12106 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0360()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 20 ></TD>
<TD align= "center"  valign= "middle"  width= 78  height= 20 ><B> 390 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0390"  value= "34991 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0360()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 24 > 205 ; 224 ; 239 ; 240 ; 224 ; 226 ; 235 ; 229 ; 237 ; 238 ; -  226 ; 241 ; 229 ; 227 ; 238 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 24 ><B> 400 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0400"  value= "88224839 " READONLY= "TRUE"  maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0450()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 31 > 226 ;  242 ;. 247 ;.  226 ; 238 ; 231 ; 226 ; 240 ; 224 ; 249 ; 229 ; 237 ; 238 ;  226 ; 235 ; 224 ; 228 ; 229 ; 235 ; 252 ; 246 ; 243 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 31 ><B> 410 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0410"  value= "0 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0400()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 20 > 239 ; 229 ; 240 ; 229 ; 247 ; 232 ; 241 ; 235 ; 229 ; 237 ; 238 ;  226 ;  225 ; 254 ; 228 ; 230 ; 229 ; 242 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 20 ><B> 420 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0420"  value= "54315 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0400()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 21 ></TD>
<TD align= "center"  valign= "middle"  width= 78  height= 21 ><B> 430 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0430"  value= "88133130 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0400()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 20 ></TD>
<TD align= "center"  valign= "middle"  width= 78  height= 20 ><B> 440 </TD>
<TD align= "right"  valign= "top" ><INPUT size= 12  type= "text"  name= "A0440"  value= "37394 " maxlength= "12 " onchange= "this.value=IsNumber(this.value);F_A0400()" ></TD>
</TR>
<TR>
<TD align= "left"  valign= "top"  width= 121  height= 35  bgcolor= "#FFFF00" > 206 ; 241 ; 242 ; 224 ; 242 ; 238 ; 234 ;  237 ; 224 ;  234 ; 238 ; 237 ; 229 ; 246 ;  238 ; 242 ; 247 ; 229 ; 242 ; 237 ; 238 ; 227 ; 238 ;  239 ; 229 ; 240 ; 232 ; 238 ; 228 ; 224 ;</TD>
<TD align= "center"  valign= "middle"  width= 78  height= 35  bgcolor= "#FFFF00" ><B> 450 </TD>
<TD align= "right"  valign= "top"  bgcolor= "#FFFF00" ><INPUT size= 12  type= "text"  name= "A0450"  value= "370340 " READONLY= "TRUE"  maxlength= "12 " onchange= "this.value=IsNumber(this.value)" ></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>


В ней пересчитываются:
стр.360=370+380+390
стр.400=410+420+430+440
стр.450=350+360-400 (вот на нее то и не действует событие onchange для стр.360 и стр.400)
...
Рейтинг: 0 / 0
12.03.2004, 11:24
    #32439439
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
2 softbuilder@inbox.ru
Большое спасибо !!! Как то и не догадался сгенерить программно событие onchange
...
Рейтинг: 0 / 0
06.05.2004, 09:38
    #32508472
stas_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JavaScript
Если тебя еще интересует ответ на твой вопрос,
то тебе следует прописать не событие onchange во втором теге, а использовать событие onpropertychange и внутри обрабатывающей функции поле объекта таким образом:

if (event.propertyName=='value') ...

Надеюсь, это поможет тебе в дальнейшем.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JavaScript / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]