Вторник, 24 Декабря 2024, 02:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг