Uncaught ReferenceError: function is not defined at HTMLInputElement.onclick?
Есть сайт на wordpress. Сделал отдельную страничку с калькулятором, где подключанию скрипты для получения величин, проверки и отправки данных.
Сейчас, в данном коде, который есть, при клике получаю ошибку: Uncaught ReferenceError: getRadioCalc1 is not defined at HTMLInputElement.onclick Код:
<?php get_header(); ?> jQuery.noConflict(); (function( $ ) { $(function() { }); })(jQuery); то получаю ошибку изначально: TypeError: $ is not a function when calling jQuery function Как это можно исправить? |
giwuf,
назначить клик через on или сделать функцию без обёртки, заменив все $ на jQuery |
рони,
Делаю вот так, но все тоже самое.. <?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", т.е. удалить из всех инпутов и назначить функцией? А если там разные параметры в нее передаются, то как? И еще: интересно, что на тестовом локальном сервере все работает, а на реальном уже нет, правда там разные темы установлены, но тем не менее |
Цитата:
Цитата:
<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> |
Цитата:
Цитата:
|
Цитата:
|
рони,
спасибо большое! Получилось! Цитата:
а как по другому |
Цитата:
|
Цитата:
|
Цитата:
Может это следствие неудачного месторасположения объявления или какие-то сопутствующие проблемы? Не скажу чтобы часто это приходилось делать, но когда приходилось проблем не было. |
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> jQuery.noConflict(); (function( $ ) { $(function() { function getInputCalc1(f1, f2, step) { alert([f1, f2]); /* $('#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;*/ } $("[data-calc]").on('click', function() { var data = $(this).data("calc"); getInputCalc1.apply(null, data) }); }); })(jQuery); </script> </head> <body> <ul class="step-list"> <li><input type="radio" class="radio" name="w-type" id="w-t-1" data-calc='["Квартира",0]'><label for="w-t-1">Другое</label></li> <li>..</li> <li>..</li> </ul> </body> </html> |
Благодарю, рони
И у меня к вам еще последний вопросс подключением сторонних библиотек: почему webuiPopover через обертку подключается и функционирует нормально, а formatter точно также нет?.. (function( $ ) { $(function() { $('.pseudo-link-popover').webuiPopover({ 'trigger': 'hover', 'width': '240', 'placement': 'auto', content: function() { return $('#' + $(this).attr('data-src')).html(); } }); $('.promo_phone_class').formatter({ 'pattern': '+7({{999}}){{999}}-{{99}}-{{99}}', 'persistent': false }); }); })(jQuery); |
giwuf,
нет элемента, на момент срабатывания строки 12 |
giwuf,
возможно так ... (function($) { $(function() { $(".pseudo-link-popover").webuiPopover({ "trigger": "hover", "width": "240", "placement": "auto", content: function() { return $("#" + $(this).attr("data-src")).html() }, onShow: function(el) { $(".promo_phone_class", el).formatter({ "pattern": "+7({{999}}){{999}}-{{99}}-{{99}}", "persistent": false }) } }) }) })(jQuery); |
Цитата:
jQuery(document).ready(function() { jQuery(function($) { $('.promo_phone_class').formatter({ 'pattern': '+7({{999}}){{999}}-{{99}}-{{99}}', 'persistent': false }); }); }); И вот так ошибка: Uncaught TypeError: jQuery(...).formatter is not a function jQuery(document).ready(function() { jQuery('.promo_phone_class').formatter({ 'pattern': '+7({{999}}){{999}}-{{99}}-{{99}}', 'persistent': false }); }); |
giwuf,
без примера, можно только гадать |
Цитата:
ccылка на пример |
giwuf,
1 загрузить jquery один раз 2 загрузить все все все плагины jquery 3 загрузить скрипты 4 загрузить bootstrap.min.js" |
giwuf,
поставьте это сразу после jquery <script src="https://likemedia.by/wp-content/themes/subway-child/jquery.formatter.min.js" ></script> |
Цитата:
поставил, но результато это не принесло.. |
giwuf,
возможно плагин устарел |
рони, т.к. wordpress работает в noConflict режиме, то нужно было в самом плагине заменить все вхождения $(..) на jQuery(...) и все заработало
|
Часовой пояс GMT +3, время: 13:16. |