Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2016, 09:44
Новичок на форуме
Отправить личное сообщение для dry fig Посмотреть профиль Найти все сообщения от dry fig
 
Регистрация: 25.03.2016
Сообщений: 8

Как к вызову функции по onclick добавить еще одно условие?
Дано: кнопка и некая функция, которая вызывается по нажатию этой кнопки. Вопрос: как к вызову функции по событию "прикрутить" радиокнопку?

<html>
<body>
<button id="but_id">click me</button>
<input type=radio name='radiobutton' value="1" id="labeled_1" checked/>
<input type=radio name='radiobutton' value="2" id="labeled_2"/>
</body>

<script>
function myAlert() {
alert("Функция вызвана");
}

var stateRadio = document.getElementById('labeled_1').value; // состояние радиокнопки

// радиокнопку надо "прикрутить" на условие вызова функции как-то так:
<stateRadio==1> И <but_id.onclick> = myAlert;

</script>
</html>

P.S. Не стреляйте в нуба - он пишет как умеет )

Последний раз редактировалось dry fig, 25.03.2016 в 11:29.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2016, 10:05
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

//радиокнопку надо "прикрутить" на условие вызова функции:
but_id.onclick = myAlert;
labeled_1.onclick = myAlert;
labeled_2.onclick = myAlert;
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2016, 10:17
Новичок на форуме
Отправить личное сообщение для dry fig Посмотреть профиль Найти все сообщения от dry fig
 
Регистрация: 25.03.2016
Сообщений: 8

Strongman,
Может быть, я недостаточно точно сформулировал свой вопрос. Мне надо, чтобы функция вызывалась только в случае, если радиокнопка в определенном состоянии И нажата кнопка. В Вашем случае реализовано по "ИЛИ".
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2016, 10:30
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

<button id="but_id">click me</button>
    <input type=radio name='radiobutton' value="1" id="labeled_1" />
    <input type=radio name='radiobutton' value="2" id="labeled_2" />
    <script>
        document.getElementById('but_id').onclick = function () {
            !!document.querySelector('input[type=radio]:checked') && alert("Функция вызвана");
        }
    </script>
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2016, 10:54
Новичок на форуме
Отправить личное сообщение для dry fig Посмотреть профиль Найти все сообщения от dry fig
 
Регистрация: 25.03.2016
Сообщений: 8

destus, спасибо.
А как сделать то же самое, но:
а) используя не querySelector, а только id?
б) чтобы решение имело вид <событие onclick кнопки> И <value радиокнопки==1> = вызов функции;

Последний раз редактировалось dry fig, 25.03.2016 в 11:03.
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2016, 11:26
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
А как сделать то же самое, но:
а) используя не querySelector, а только id?
<button id="but_id">click me</button>
    <input type=radio name='radiobutton' value="1" id="labeled_1" />
    <input type=radio name='radiobutton' value="2" id="labeled_2" />
    <script>
        document.getElementById('but_id').onclick = function () {
            (!!(document.getElementById('labeled_1').checked || document.getElementById('labeled_2').checked)) && alert("Функция вызвана");
}
    </script>


Цитата:
б) чтобы решение имело вид <событие onclick кнопки> И <value радиокнопки==1> = вызов функции;
<button id="but_id">click me</button>
    <input type=radio name='radiobutton' value="1" id="labeled_1" />
    <input type=radio name='radiobutton' value="2" id="labeled_2" />
    <script>
        document.getElementById('but_id').onclick = function () {
            var radio = document.getElementsByName('radiobutton');
            if ([].some.call(radio, function (el) {
                if (el.checked && +el.value === 1)
                    return true;
            }))
                alert("Функция вызвана");
        }
    </script>
Ответить с цитированием
  #7 (permalink)  
Старый 25.03.2016, 11:37
Новичок на форуме
Отправить личное сообщение для dry fig Посмотреть профиль Найти все сообщения от dry fig
 
Регистрация: 25.03.2016
Сообщений: 8

destus, но у Вас радиокнопка проверяется в теле функции, а мне надо наоборот, снаружи:
<stateRadio==1> И <but_id.onclick> = myAlert;
И обращаться к радиокнопке надо не по имени, а по id.
Ответить с цитированием
  #8 (permalink)  
Старый 25.03.2016, 12:41
Новичок на форуме
Посмотреть профиль Найти все сообщения от newcoolguru
 
Регистрация: 25.03.2016
Сообщений: 2

but_id.onclick = function(){
  labeled_1.checked && alert(1)
}
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2016, 13:58
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от dry fig Посмотреть сообщение
destus, но у Вас радиокнопка проверяется в теле функции, а мне надо наоборот, снаружи:
<stateRadio==1> И <but_id.onclick> = myAlert;
И обращаться к радиокнопке надо не по имени, а по id.
Выбранная радиокнопка - это состояние, а нажатие на кнопку - это событие, поэтому состояние радиокнопок проверяется внутри обработчика события нажатия на кнопку.
Ответить с цитированием
  #10 (permalink)  
Старый 26.03.2016, 13:45
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Сообщение от newcoolguru Посмотреть сообщение
but_id.onclick = function(){
  labeled_1.checked && alert(1);}
Так как у Вас не работает, вот так работает:
but_id.onclick = function(){
if(labeled_1.checked) myAlert();}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить еще поле? Jony X Общие вопросы Javascript 12 06.07.2018 23:47
как в динамически добавляемый элемент добавить еще несколько? sadonn Элементы интерфейса 1 29.05.2010 12:07
Как добавить еще поле? Jony X jQuery 0 30.08.2009 19:21
Скрипт калькулятора (не могу добавить еще одно значение) Jee_Day Я не знаю javascript 2 22.05.2009 13:19
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37