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, время: 04:45. |