Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как в oninput получить значения select? (https://javascript.ru/forum/events/50757-kak-v-oninput-poluchit-znacheniya-select.html)

Jeick9 09.10.2014 23:36

Как в oninput получить значения select?
 
Здравствуйте.
Имеется форма, где через oninput, соответственно, вычисляется значения из инпутов и выводится в output. Но, есть одна проблема, когда выбрать из селекта одно из значений, соответственно, меняется значения в id='paketscount' , но это значения динамически не меняется при подсчете oninput. Подскажите, пожалуйста, можно как-то напрямую вытащить значение value из select и домножить его к (3.5 / 10), вместо paketscount.value ?

<form action="#" method="post" data-ajax="false" oninput="output.value = (3.5 / 10) *  paketscount.value ">
 
<select name="sitetime" id="sitetime" onchange="document.getElementById('paketscount').value=value;  with (this) document.getElementById ('rez').value=value =
             (selectedIndex) ? options [selectedIndex].text / 15 - 1 : '3'">

<option value="1" >60</option>
<option value="2" >90</option>
<option value="2" >120</option>
<option value="3" >150</option>
<option value="3" >180</option>
<option value="4" >210</option>
<option value="4" >240</option>
<option value="5" >270</option>
<option value="5" >300</option>
</select>

<div class="patets"><input style="width:50px!important; flaot:left;" type='text' id='paketscount' value="1" /></div>
		
<input id="rez" style="width:50px!important; flaot:left;" type='text'  value="3" />

<output name="output">1</output>
 </form>

danik.js 10.10.2014 05:56

sitetime.value ?
Кстати, output - HTML5 элемент, со всеми вытекающими..
Можно на input[readonly] заменить. Ну или на div/span и менять innerHTML вместо value

Jeick9 10.10.2014 11:58

sitetime.value не срабатывает
 
Добавил sitetime.value в oninput, output заменил на input, но но значения из селекта sitetime не вытягивается.

danik.js 10.10.2014 12:13

<form action="#" method="post" data-ajax="false" onchange="output.value = (3.5 / 10) *  paketscount.value " oninput="onchange()">
  
<select name="sitetime" id="sitetime" onchange="document.getElementById('paketscount').value=value;  with (this) document.getElementById ('rez').value=value =
             (selectedIndex) ? options [selectedIndex].text / 15 - 1 : '3'">
 
<option value="1" >60</option>
<option value="2" >90</option>
<option value="2" >120</option>
<option value="3" >150</option>
<option value="3" >180</option>
<option value="4" >210</option>
<option value="4" >240</option>
<option value="5" >270</option>
<option value="5" >300</option>
</select>
 
<div class="patets"><input style="width:50px!important; flaot:left;" type='text' id='paketscount' value="1" /></div>
         
<input id="rez" style="width:50px!important; flaot:left;" type='text'  value="3" />
 
<output name="output">1</output>
 </form>

Jeick9 10.10.2014 12:32

Спасибо за помощь, всё работает.
Осталось только по сабмиту передать значения из этих полей включая цену. Проблема в томб что динамических значений value в коде нет. Как их собственно передать?

danik.js 10.10.2014 12:37

Цитата:

Сообщение от Jeick9
Как их собственно передать?

А вариант просто сабмитить форму не пойдет? В общем, в любом случае тут нет ничего особенного. Если нужно отправить аяксом - сериализуй поля формы, как обычно.
Ну и имей ввиду что цену можно изменять через консоль браузера.
Так что передавать ее можно только для ориентира.
Вобще, лучше пересчитывать на сервере по той же формуле.

Jeick9 10.10.2014 13:18

Спасибо, действительно проще будет пересчитать на сервере.

danik.js 10.10.2014 13:59

Jeick9, не проще. Что может быть проще, чем получить $_POST['price'] ? Не проще, но надежнее (если эта надежность требуется)

danik.js 10.10.2014 14:00

Впиши в action реальный адрес обработчика, добавь кнопку submit и все будет работать. Учитывая твое data-ajax="false" - у тебя есть скрипт, отсылающий формы аяксом, но тебе это не нужно.

kostyanet 11.10.2014 20:18

Так не делается. Посчитать что-то можно чтобы показать юзеру, а посчитать что-то чтобы выставить юзеру счет - только на сервере.

flaot:left;

И работает?


Часовой пояс GMT +3, время: 14:05.