getData и формы. Не работает в опере.
|
|
zxc76 | Дата: Вторник, 26 Августа 2014, 22:40 | Сообщение # 1 |
39DLL Rulezz
Сейчас нет на сайте
| В хроме всё прекрасно работает. В опере только галочка "Срочный заказ" реагирует. В чем ошибка? Другие браузеры вообще боюсь открывать... Код: Код <script language="JavaScript"> var ye_stil_plus = []; var ye_day_plus=[]; var proc_speed=[]; var day_speed=[]; var ye_rec=[]; var ye_in=[];
stil_vbr=1; ye_stil_plus[1]=100; ye_stil_plus[2]=244; ye_stil_plus[3]=524; ye_day_plus[1]=2; ye_day_plus[2]=1; ye_day_plus[3]=5; ye_rec=300; ye_in=40; day_speed=2; proc_speed=30;
function getData(f) { stil_vbr=parseFloat(f.stil.value); ye_stil=ye_stil_plus[stil_vbr]; day_out=ye_day_plus[stil_vbr]; ye_out=ye_stil;
ye_out_1kup=ye_out; kyp=parseFloat(f.kyp.value); ye_out=ye_out*kyp+ye_in;
if(f.ch_speed.checked){ ye_out+=ye_out/100*proc_speed; day_out=day_speed; }
f.ye_out.value="Цена: "+ye_out.toString(); f.day_out.value="Дней: "+day_out;
}
</script>
<center> <table border=0 width=55% cellspacing="0" cellpadding="0" bgcolor=#137464 align=left> <td height=40 align=center> <font size=5 face="BOOKMAN OLD STYLE" color="white" > Заполните заказ</b></font> </td> </table> <table border=0 width=55% cellspacing="0" cellpadding="0" bgcolor=#108468 align=left> <td width=150 bgcolor=#098167> </td> <td border=0 align=left>
<form name="test" method="post" action="" enctype="multipart/form-data"> <table align="left" cellspacing="15" cellpadding="2" border="0" width="30"> <Br><Br> <input type="text" name="tip" size=1 value="1" style="background-color: transparent; border-color:transparent; color:transparent;" >
<p><font size=5 face="BOOKMAN OLD STYLE" color="white" > Какой стиль вам больше близок.</b></font><Br>Как-будто здесь картинки) <font size=4 face="BOOKMAN OLD STYLE" color="white" >
<input type="radio" name="stil" id="1" value="1" checked onchange="getData(this.form)">Р1<Br> <input type="radio" name="stil" id="2" value="2" checked onchange="getData(this.form)">Р2<Br> <input type="radio" name="stil" id="1" value="3" checked onchange="getData(this.form)">Р3<Br> </font></p><br> <p><font size=5 face="BOOKMAN OLD STYLE" color="white" > Количество необходимых рисунков:</b></font><Br> <font size=4 face="BOOKMAN OLD STYLE" color="white" >
<input type="radio" name="kyp" id="1" value="1" checked onchange="getData(this.form)">1<Br> <input type="radio" name="kyp" id="1" value="2" checked onchange="getData(this.form)">2<Br> <input type="radio" name="kyp" id="1" value="3" checked onchange="getData(this.form)">3<Br> </font></p><br><p>
<font size=4 face="BOOKMAN OLD STYLE" color="white" >
<p> <font size=4 face="BOOKMAN OLD STYLE" color="white" > <input type="checkbox" name="ch_speed" id="ch_speed" onchange="getData(this.form)"> <label for="ch_speed" >Срочный заказ</label> </font></p>
</td> </table>
<font size=4 face="BOOKMAN OLD STYLE" color="white" > Результат:<Br></font> <center> <input name=ye_out size=8 value="Нет данных" disabled style="background-color: transparent; border-color:transparent; font-size: 28px; color:white;"> <Br> <input name=day_out size=8 value="Нет данных" disabled style="background-color: transparent; border-color:transparent; font-size: 24px; color:white;" > <Br> <p><input type="submit" value="Отправить заказ"></p> </center> </form> </td> </table>
PHP
|
|
| |
lvovand | Дата: Вторник, 26 Августа 2014, 23:21 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| как то уж куча всего нехорошего <input type="radio" name="stil" id="1" value="1" и т.д. если они у тебя radio, то почему у всех checked проставлено? id почему то у элементов повторяюся, хотя id на то и id чтобы уникальным быть
как-то странно к элементам обращаешься f.stil.value
тогда уж f.stil[0].value, f.stil[1].value и т.д.Добавлено (26.08.2014, 23:21) --------------------------------------------- да и зачем вообще такую кучу переменных? у тебя же просто есть цена в зависимости от стиля, как я понимаю, умножается на кол-во, ну и надбавка за срочность, все это можно в пару строк расписать в функции, без кучи массивов и переменных
Разработка и продвижение сайтов. Дизайн
|
|
| |
zxc76 | Дата: Вторник, 26 Августа 2014, 23:49 | Сообщение # 3 |
39DLL Rulezz
Сейчас нет на сайте
| lvovand, хорошо, поменяю эти штуки все) У меня просто ещё php был привязан, и он сам задавл id. checked ставил чтоб последний был выбран, это тоже мелочь, но проверю, может Опера на это так реагировала)
Цитата lvovand ( ) как-то странно к элементам обращаешься f.stil.value тогда уж f.stil[0].value, f.stil[1].value и т.д. Об этом не знал, исправлю! Хотя Опере это вроде всё равно.
Цитата lvovand ( ) у тебя же просто есть цена в зависимости от стиля, как я понимаю, умножается на кол-во, ну и надбавка за срочность, все это можно в пару строк расписать в функции, без кучи массивов и переменных У меня куча всего из php берется просто)))) И я убрал параметра 3-4 ещё)
PHP
|
|
| |
last2424 | Дата: Среда, 27 Августа 2014, 00:08 | Сообщение # 4 |
30 мл. блоков
Сейчас нет на сайте
| zxc76, ещё есть вариант такой, у браузеров всех разное, а может у кого то одинаковое восприятие JavaScript'a какие то функций работают нормально, какие то через задницу.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Пятница, 29 Августа 2014, 15:06 |
|
| |
lvovand | Дата: Среда, 27 Августа 2014, 01:36 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| f.stil[0].value - ну собственно не можно а нужно )) ты же по сути делаешь getElementsByName - и получаешь массив элементов у которых name=...
противник тоже библиотек? так то бы можно подключить бибилиотеку, хоть тот же jquery, в ней спокойно выборку и обращение к элементам делать, и во всех браузерах нормально сработает.
так навскидку я бы прописывал у радиобаттонов <input type="radio" name="..." id="..." data-days="..." data-price="...">
и итоговая функция была бы проще
function getData(){ $("input:checked").each(function(){ тут смотреть уже аттрибуты выделенного радиобаттона или чекбокса и делать расчет } ); }
Разработка и продвижение сайтов. Дизайн
|
|
| |
zxc76 | Дата: Среда, 27 Августа 2014, 20:47 | Сообщение # 6 |
39DLL Rulezz
Сейчас нет на сайте
| lvovand, хорошо, учту всё это. Хотя данные с форм везде принимаются, а вот дальше что-то не так идет. Возьму jquery как решение проблемы)) Спасибо) А нет альтернативы джаваскрипту? Которая бы высчитывала стоимость исходя из того что нажата на формах. Что-то минимальное)
PHP
|
|
| |
lvovand | Дата: Среда, 27 Августа 2014, 22:54 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата zxc76 ( ) А нет альтернативы джаваскрипту? asp? ) но это уж из пушки по воробьям, всяко js тут самое простое и правильное
Разработка и продвижение сайтов. Дизайн
|
|
| |
zxc76 | Дата: Суббота, 30 Августа 2014, 23:20 | Сообщение # 8 |
39DLL Rulezz
Сейчас нет на сайте
| lvovand, спасибо за помощь) Определенно jquery))Добавлено (30.08.2014, 23:20) --------------------------------------------- Я решил проблему. lvovand, промыл мозг, с этим массивом после имени (f.stil[0].value ), и я понял в чем дело было))))
В хроме f.stil.value возвращает значение выбранного элемента из radio stil. А в опере возвращало NaN.
Написал функцию, которая возвращает на каком элементе стоит checked. [code] function getRadioVbr(rad_f) { a=0; for(i=0;i<=rad_f.length-1;i++){ if(rad_f[i].checked){ a=i+1; } } return a; }
getRadioVbr(f.stil);//возвращает номер выбранного элемента из radio stil, это то что мне было нужно.
Может кому-то это решение пригодиться)))
PHP
|
|
| |
romgerman | Дата: Суббота, 30 Августа 2014, 23:28 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Не смотря на то, что проблема решена, я скажу, что в опере жс двиг немного кривой, поэтому даже в "идеальном" коде может что-то не так работать.
Сообщение отредактировал romgerman - Суббота, 30 Августа 2014, 23:28 |
|
| |
zxc76 | Дата: Суббота, 30 Августа 2014, 23:51 | Сообщение # 10 |
39DLL Rulezz
Сейчас нет на сайте
| romgerman, это даа, ты прав!!! Опера полна сюрпризов. Как раз когда ты написал, я узнал что если поставить на input- disabled, то цвет внутри инпута будет всегда серым (в опере). Пришлось через джаваскрипт имитировать disabled чтоб цвет поставить другой)))))
PHP
|
|
| |