Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2017, 12:40
Интересующийся
Отправить личное сообщение для wwonder Посмотреть профиль Найти все сообщения от wwonder
 
Регистрация: 09.09.2016
Сообщений: 28

Передача значения 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, что бы все браузеры и мобильные устройства получали данные? Спасибо за любые подсказки.
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2017, 13:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от 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>

Последний раз редактировалось ksa, 13.03.2017 в 13:30.
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2017, 13:54
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2017, 15:58
Интересующийся
Отправить личное сообщение для wwonder Посмотреть профиль Найти все сообщения от wwonder
 
Регистрация: 09.09.2016
Сообщений: 28

Спасибо! Так получилось. Но интересует как это все прикрутить к событию Onclick, так как моя переменная передается в несколько функций сразу.
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2017, 15:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от wwonder
как это все прикрутить к событию Onclick
Так Dilettante_Pro это уже показал (см.выше)...
Ответить с цитированием
  #6 (permalink)  
Старый 15.03.2017, 14:43
Интересующийся
Отправить личное сообщение для wwonder Посмотреть профиль Найти все сообщения от wwonder
 
Регистрация: 09.09.2016
Сообщений: 28

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

alert(o.value);</script>
Значение пустое, а не ноль, и ошибка идет, скрипт останавливается... Я с js на Вы, как написать проверку на NULL и присвоить 0?
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2017, 14:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от wwonder
Значение пустое, а не ноль
val=(val=='')? 0; val;

Сообщение от wwonder
как написать проверку на NULL и присвоить 0?
val=val||0;
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2017, 17:57
Интересующийся
Отправить личное сообщение для wwonder Посмотреть профиль Найти все сообщения от wwonder
 
Регистрация: 09.09.2016
Сообщений: 28

В итоге работает так
<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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо реализовать функцию jQuery на чистом JS Kliraks Общие вопросы Javascript 1 08.03.2016 08:45
передача значения в функцию imedia Элементы интерфейса 2 21.06.2014 19:02
Добавить значения из CheckBox в Input tohenson Общие вопросы Javascript 1 18.05.2014 19:09
Записать в один input значения нескольких input -=fluffy=- Элементы интерфейса 2 17.04.2014 17:40
Вывод JS значения в одну строку в HTML velo Общие вопросы Javascript 7 15.12.2009 03:57