Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передача значения input в функцию js (https://javascript.ru/forum/dom-window/67885-peredacha-znacheniya-input-v-funkciyu-js.html)

wwonder 13.03.2017 12:40

Передача значения input в функцию js
 
Добрый день!
Есть несколько input, которые я передаю таким образом
OnClick='my_func(name1.value,name2.value)'

Значения select-ов передаются таким образом без проблем.
А вот значение
<input type="radio" name="serve" value="1" checked>
<input type="radio" name="serve" value="2">
В браузере Safari и на apple-устройствах выдают undefined
В Хроме напр передает значения. Чем это обусловлено? Возможно, передача значений через name.value недоступна в некоторых браузерах? Как лучше всего обращаться в inputam, что бы все браузеры и мобильные устройства получали данные? Спасибо за любые подсказки.

ksa 13.03.2017 13:27

Цитата:

Сообщение от wwonder
Как лучше всего обращаться в inputam

Например по ИД...
Все равно как ты определишь ссылку на элемент. Главное его определить однозначно. Обращение по именам дает возможность работать с коллекцией одноименных элементов...

В случае с радиокнопками нужно определять активный элемент самому

<input type="radio" name="serve" value="1" checked>
<input type="radio" name="serve" value="2">
<script>
var o=document.querySelector('[name="serve"]:checked');
alert(o.value);
</script>

Dilettante_Pro 13.03.2017 13:54

<input type="radio" name="serve" value="1" checked>
<input type="radio" name="serve" value="2">
<script>
var inpServe = document.querySelectorAll('[name="serve"]');

for(var i = 0; i < inpServe.length; i++) {
   inpServe[i].onclick = function() {
       var o=document.querySelector('[name="serve"]:checked');
       alert(o.value);
}};
</script>

wwonder 13.03.2017 15:58

Спасибо! Так получилось. Но интересует как это все прикрутить к событию Onclick, так как моя переменная передается в несколько функций сразу.

ksa 13.03.2017 15:59

Цитата:

Сообщение от wwonder
как это все прикрутить к событию Onclick

Так Dilettante_Pro это уже показал (см.выше)...

wwonder 15.03.2017 14:43

Вот еще вопрос возник, а как если ни один элемент не выбран, как быть? У меня по факту
<script>var o=document.querySelector('[name="serve"]:checked');

alert(o.value);</script>
Значение пустое, а не ноль, и ошибка идет, скрипт останавливается... Я с js на Вы, как написать проверку на NULL и присвоить 0?

ksa 15.03.2017 14:48

Цитата:

Сообщение от wwonder
Значение пустое, а не ноль

val=(val=='')? 0; val;

Цитата:

Сообщение от wwonder
как написать проверку на NULL и присвоить 0?

val=val||0;

wwonder 15.03.2017 17:57

В итоге работает так
<script>
if ( !Array.prototype.filter.call( document.getElementsByName('serve'), function( elem ){ return elem.checked; } ).length ) {
   var serve=0;
}
else var serve = document.querySelector('input[name="serve"]:checked').value;
</script>


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