Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Uncaught ReferenceError: function is not defined at HTMLInputElement.onclick? (https://javascript.ru/forum/jquery/75181-uncaught-referenceerror-function-not-defined-htmlinputelement-onclick.html)

giwuf 10.09.2018 23:35

Uncaught ReferenceError: function is not defined at HTMLInputElement.onclick?
 
Есть сайт на wordpress. Сделал отдельную страничку с калькулятором, где подключанию скрипты для получения величин, проверки и отправки данных.
Сейчас, в данном коде, который есть, при клике получаю ошибку:
Uncaught ReferenceError: getRadioCalc1 is not defined at HTMLInputElement.onclick

Код:

<?php get_header(); ?>

<script>
  jQuery.noConflict();
(function( $ ) {
    $(function() {

              function getInputCalc1(f1, f2, step) {
                $('#w-size-1').attr('checked', false);
                var f1Val = $('#' + f1).val();
                var f2Val = $('#' + f2).val();
                var rezult = 'Размеры: (ширина=' + f1Val + ' мм, высота=' + f2Val + ' мм)';
                rezCalc1[step + 1] = rezult;
                $('#rez1').val(rezCalc1.join(', '));
                return false;
              }

});
  })(jQuery);
</script>

<ul class="step-list">
  <li><input type="radio" class="radio" name="w-type" id="w-t-1" onclick="getRadioCalc1('Квартира',0);"><label for="w-t-1">Другое</label></li>
  <li>..</li>
  <li>..</li>
</ul>

<script>
(function( $ ) {
$(document).on('click', '.form-submit-355', function() {
});
})(jQuery);
</script>
<?php get_footer(); ?>

Если делать без обвертки
jQuery.noConflict();
(function( $ ) {
    $(function() {
});
})(jQuery);

то получаю ошибку изначально:
TypeError: $ is not a function when calling jQuery function

Как это можно исправить?

рони 11.09.2018 00:17

giwuf,
назначить клик через on или сделать функцию без обёртки, заменив все $ на jQuery

giwuf 11.09.2018 09:45

рони,
Делаю вот так, но все тоже самое..

<?php get_header(); ?>

<script>
jQuery.noConflict();

    jQuery(function() {

function getRadioCalc1(val, step) {
            if (step == 0) {
              rezCalc1[1] = val;
            } else {
              rezCalc1[step + 1] = val;
            }
            if (val == 'Створок: 1') {
              imgID = '1';
            }
            if (val == 'Створок: 2') {
              imgID = '2';
            }
            if (val == 'Створок: 3') {
              imgID = '3';
            }
            if (val == 'Балконный блок') {
              imgID = '4';
            }
            $('#countCounter1').attr('src', '<?php echo get_stylesheet_directory_uri() ?>/images/calc-sel-window-' + imgID + '.jpg');
            $('#rez1').val(rezCalc1.join(', '));
            return false;
          }
});
</script>

<ul class="step-list">
   <li><input type="radio" class="radio" name="w-type" id="w-t-1" onclick="getRadioCalc1('Квартира',0);"><label for="w-t-1">Другое</label></li>
   <li>..</li>
   <li>..</li>
</ul>

<script>
jQuery(document).on('click', '.form-submit-355', function() {

});
</script>
<?php get_footer(); ?>


А что означает "назначить клик через on", т.е. удалить из всех инпутов и назначить функцией? А если там разные параметры в нее передаются, то как?

И еще: интересно, что на тестовом локальном сервере все работает, а на реальном уже нет, правда там разные темы установлены, но тем не менее

рони 11.09.2018 10:36

Цитата:

Сообщение от giwuf
Делаю вот так

нет не так
Цитата:

Сообщение от рони
заменив все $ на jQuery

<script>
  jQuery.noConflict();
              function getInputCalc1(f1, f2, step) {
                jQuery('#w-size-1').attr('checked', false);
                var f1Val = jQuery('#' + f1).val();
                var f2Val = jQuery('#' + f2).val();
                var rezult = 'Размеры: (ширина=' + f1Val + ' мм, высота=' + f2Val + ' мм)';
                rezCalc1[step + 1] = rezult;
                jQuery('#rez1').val(rezCalc1.join(', '));
                return false;
              }

;
 
</script>

рони 11.09.2018 10:44

Цитата:

Сообщение от giwuf
т.е. удалить из всех инпутов и назначить функцией?

да
Цитата:

Сообщение от giwuf
А если там разные параметры в нее передаются, то как?

параметры оставить в инпуте типа data-calc="['Квартира',0]"

laimas 11.09.2018 10:50

Цитата:

Сообщение от рони
заменив все $ на jQuery

Не обязательно.

giwuf 11.09.2018 11:13

рони,
спасибо большое! Получилось!

Цитата:

Не обязательно.
laimas,
а как по другому

laimas 11.09.2018 11:18

Цитата:

Сообщение от giwuf
а как по другому

Вот так.

рони 11.09.2018 11:30

Цитата:

Сообщение от laimas
Вот так.

:blink: :blink: :blink: посмотри пожалуйста первый пост.

laimas 11.09.2018 11:36

Цитата:

Сообщение от рони
посмотри пожалуйста первый пост

Да, неудачный ВВ тег выбран. :)

Может это следствие неудачного месторасположения объявления или какие-то сопутствующие проблемы? Не скажу чтобы часто это приходилось делать, но когда приходилось проблем не было.


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