Не работает вызов jquery функции с помощью onChange

Не работает вызов функции с помощью onChange="calculate()". В консоли никаких ошибок вообще нет. До того как добавил консрукцию jQuery(document).ready(function($) выдавало $ is not a function

jQuery(document).ready(function($) {
    function calculate(){
         //тут код функции
    }
})

Ответы (2 шт):

Автор решения: Denis640Kb

Можете обращаться по классу или по id элемента.
В функцию либо передавайте параметр, либо оставляйте пустым.
Не стоит передавать символ $
Пример, как это работает:

    $('#bum').on('click', function () {
        function calculate(){
            //тут код функции
        }
        console.log('123');
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="bum">Парам Пам Пам</div>

→ Ссылка
Автор решения: tutankhamun

За неимением подробностей в тексте вопроса, побробуем телепатию. Итак: сначала ругалось на $, потом просто не стало вызываться.

Пока вывод такой: jQuery подключен c noConflict() (Wordpress?). В функции calculate() есть вызовы методов $.

Как решить

Малой кровью:

  1. Убираем jQuery(document).ready(function ($) {})
  2. В начало фнукции calculate() пишем let $ = jQuery; (или var $ = jQuery; если браузер очень старый)

Правильным способом:

  1. Оставляем jQuery(document).ready(function ($) {}) (можно написать короче jQuery(function($) {}))
  2. Устанавливаем обработчик через $(селектор).on('change', calculate);. Эта строка должна быть после определения функции calculate().

Нужно еще учитывать, вы устанавливаете обработчик на элементе, который постоянно присутствует на странице или появляется там как результат других функций. В первом случае указанные изменения должны помочь. Во втором случае правильный способ потребует установки обработчика после появления элемента на странице

→ Ссылка