Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
 Аватар для Saym
5 / 5 / 4
Регистрация: 02.11.2014
Сообщений: 196

Вызов функции checkbox onclick

18.04.2018, 14:52. Показов 6616. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма с чекбоксами:
HTML5
1
2
3
4
5
6
7
8
9
...
<form action="index.html" method="post">
      <input type="checkbox" name="food[]" value="hamburger"> Hamburger
      <input type="checkbox" name="food[]" value="fries"> Fries
      <input type="checkbox" name="food[]" value="salad"> Salad
      <input type="checkbox" name="food[]" value="pizza"> Pizza
      <input type="submit" name="submit" value="Submit">
...
 </form>
Функция при нажатии на кнопку (submit):

Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
document.forms[0].onsubmit = function () {
      // Set up an anonymous function reference for when the form is submitted.
 
        var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Msxml2.XMLHTTP.6.0');
        // Simplified testing to create a valid Ajax object in all browsers.
 
        ajax.onreadystatechange = function () {
        // This event handler takes care of the response from the PHP script that handles the DB processing.
 
          if ((ajax.readyState === 4) && (ajax.status === 200)) {
 
            document.getElementById("text").innerHTML = ajax.responseText;
            //alert(ajax.responseText); // Do something with the response from the DB processing PHP script.
 
          }
 
        };
 
        var post_arr = [];
        // Declare an empty array.
 
        for (var i = 0; i < this['food[]'].length; i++) {
        // Loop through each of the checkboxes. Because the name attribute contains brackets (which have special meaning in JS),
        // you have to use the above syntax to refer to the checkbox array in JS.
 
          if (this['food[]'][i].checked) {
          // If the ith checkbox is checked, assign 1.
 
            post_arr[i] = this['food[]'][i].value + '=' + 1;
 
          } else {
          // If not, assign 0.
 
            post_arr[i] = this['food[]'][i].value + '=' + 0;
 
          }
 
        }
 
        var params = post_arr.join('&');
 
        // alert(params); // You can uncomment this line and alert params to the screen to see what's sent to the PHP script.
 
        ajax.open('post', 'db_processing.php');
 
        ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        // Don't forget this request header for the post method.
 
        ajax.send(params);
 
        return false;
        // Suppress the standard form submission.
 
      };
 
    </script>


Я хочу, чтобы эта функция запускалась каждый раз при изменении состояния какого-либо из чекбоксов. Без необходимости нажимать submit.
Пробовал так (добавлял onClick на каждый чекбокс, и менял начало скрипта):
HTML5
1
2
3
4
5
6
7
<form action="index.html" method="post">
      <input type="checkbox" name="food[]" value="hamburger" onClick = "Check()"> Hamburger
      <input type="checkbox" name="food[]" value="fries" onClick = "Check()"> Fries
      <input type="checkbox" name="food[]" value="salad" onClick = "Check()"> Salad
      <input type="checkbox" name="food[]" value="pizza" onClick = "Check()"> Pizza
      
 </form>
Начало скрипта:
JavaScript
1
2
3
4
5
 function Check() {
      // Set up an anonymous function reference for when the form is submitted.
 
        var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Msxml2.XMLHTTP.6.0');
        // Simplified testing to create a valid Ajax object in all browsers.
Но при нажатии на чекбокс ничего не происходит.

Пробовал убирать onClick и изменять начало скрипта на это:
JavaScript
1
document.getElementsByName("food[]").onClick = function ()
и так тоже:
JavaScript
1
document.getElementsByName("food").onClick = function ()
но не работает...
Как исправить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2018, 14:52
Ответы с готовыми решениями:

Убрать и назначить вызов функции событию onClick
Добрый день. Вопрос в следующем: &lt;div&gt; &lt;div class=&quot;frontstyle&quot;&gt;&lt;img id=&quot;g25&quot; height=&quot;100&quot; src=&quot;img/empty.jpg&quot;...

CheckBox с OnClick
НА формме есть два чекбокса и два поти типа инпут, Мне нужно при нажатии на первый чекбокс вывести значеие первого поля типа инпут в Alert,...

Вызов onClick у div элемента
Как можно вызвать onclick у div элемента?

3
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
18.04.2018, 15:19
Исправить очень просто:
https://codepen.io/anon/pen/odNeww
JavaScript
1
2
3
4
5
Array.from(document.querySelectorAll('[name="food[]"]')).forEach(function(checkbox){
  checkbox.onchange = function(){
    console.log(checkbox.value)
  }
})
1
 Аватар для Saym
5 / 5 / 4
Регистрация: 02.11.2014
Сообщений: 196
18.04.2018, 15:39  [ТС]
Спасибо большое
Только я не понимаю куда вставлять остальную часть скрипта...

Так?
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Array.from(document.querySelectorAll('[name="food[]"]')).forEach(function(checkbox){
  checkbox.onchange = function(){
    console.log(checkbox.value)
 
     var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Msxml2.XMLHTTP.6.0');
        // Simplified testing to create a valid Ajax object in all browsers.
 
        ajax.onreadystatechange = function () {
        // This event handler takes care of the response from the PHP script that handles the DB processing.
 
          if ((ajax.readyState === 4) && (ajax.status === 200)) {
 
            alert(ajax.responseText); // Do something with the response from the DB processing PHP script.
 
          }
 
        };
 
        var post_arr = [];
        // Declare an empty array.
 
        for (var i = 0; i < this['food[]'].length; i++) {
        // Loop through each of the checkboxes. Because the name attribute contains brackets (which have special meaning in JS),
        // you have to use the above syntax to refer to the checkbox array in JS.
 
          if (this['food[]'][i].checked) {
          // If the ith checkbox is checked, assign 1.
 
            post_arr[i] = this['food[]'][i].value + '=' + 1;
 
          } else {
          // If not, assign 0.
 
            post_arr[i] = this['food[]'][i].value + '=' + 0;
 
          }
 
        }
 
        var params = post_arr.join('&');
 
        // alert(params); // You can uncomment this line and alert params to the screen to see what's sent to the PHP script.
 
        ajax.open('post', 'db_processing.php');
 
        ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        // Don't forget this request header for the post method.
 
        ajax.send(params);
 
        return false;
        // Suppress the standard form submission.
  }
 
})
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
18.04.2018, 15:48
Лучший ответ Сообщение было отмечено Saym как решение

Решение

Saym, если нужно отправлять запрос после каждого изменения чекбокса - да, так

Только строки вида this['food[]'].length нужно будет заменить, ибо this будет равным window
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2018, 15:48
Помогаю со студенческими работами здесь

Вызов нескольких функций при onclick
Коллеги, в магазину нужно повесить события на кнопку &quot;Купить&quot;: из Яндекс Метрики -...

Вызов функции OnClick()
Приветствую. Есть объект, у него есть атрибут 'onclick', выглядит примерно так: &lt;table onclick=&quot;Open(this)&quot;&lt;/table&gt; ...

вызов php функции из OnClick html'a
кароче есть функция $user-&gt;show(); и есть кнопка ,вопрос: как сделать так чтобы когда я нажимал на кнопку ,то срабатывала функция...

Работа с динамическим массивом CheckBox и событие onclick
вопрос: например у меня в файле хранится заданное число N необходимо динамически создать N элементов checkbox и написать обработчик...

Не всегда срабатывает onClick при изменении состояния checkBox
Ребят, такая проблема: делаю АРМ кое какой, и в начале заметил что onClick срабатывает при изменении состояния checkbox, и исходя из этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru