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

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

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

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

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

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

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

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

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

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

После выхода отработает 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
Вопрос по JavaScript
    #32439393
23a77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак привожу код самой простой сгенеренной 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
Вопрос по JavaScript
    #32439439
23a77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder@inbox.ru
Большое спасибо !!! Как то и не догадался сгенерить программно событие onchange
...
Рейтинг: 0 / 0
Вопрос по JavaScript
    #32508472
stas_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если тебя еще интересует ответ на твой вопрос,
то тебе следует прописать не событие onchange во втором теге, а использовать событие onpropertychange и внутри обрабатывающей функции поле объекта таким образом:

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

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


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