Есть на wordpress сайте страница калькулятора, где подключена библиотека formatter.js для корректного ввода телефона по патерну. Но, захожу на страницу и которую получаю ошибки вида:
jquery.formatter.min.js:1 Uncaught TypeError: Cannot read property 'fn' of undefined
Uncaught TypeError: $(...).formatter is not a function
В связи с чем они возникли? Вроде как все в шаблоне подключаю грамотно после объявления jquery
.
Код functions.php
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method(){
if ( is_page('calculator') ) {
wp_enqueue_script( 'formatter-js', get_stylesheet_directory_uri() . '/jquery.formatter.min.js',array('jquery'),null,true);
wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() . '/scripts.js',array('jquery'),null,true);
}
}
Код scripts.js где вызываю formatter
jQuery(document).ready(function($) {
$('.promo_phone_class').val('+7');
$('.promo_phone_class').keyup(function(e) {
if((e.keyCode == 8) || (e.keyCode == 46)) {
if($(this).val() == '') {
$(this).val('+7');
}
}
});
$('.promo_phone_class').formatter({
'pattern': '+7({{999}}){{999}}-{{99}}-{{99}}',
'persistent': false
});
$('[field=phone]').formatter({
'pattern': '({{999}}){{999}}-{{99}}-{{99}}',
'persistent': false
});
});
WordPress использует jQuery noConflict mode. Именно поэтому первая строка вашего файла выглядит как jQuery(document).ready(function($) {
, чтобы внутри него использовать символ $
вместо jQuery
.
jQuery.formatter.js
, однако, сразу пытается использовать символ $
в своём коде, не предполагая, что jQuery может быть запущен в noConflict mode.
Попробуйте взять исходный код jquery.formatter.js
и заменить в нём $
на jQuery
. Подключение скриптов будет выглядеть так:
wp_enqueue_script( 'formatter-js', get_stylesheet_directory_uri() . '/jquery.formatter.js',array('jquery'),null,true);
wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() . '/scripts.js',array('jquery', 'formatter-js'),null,true);
Обратите внимание на отсутствие min
в первой строке и зависимость от formatter во второй.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите составить регулярное выражение, которое проверяет строку на то, чтобы в ней были только цифры(от 7 до 15), но также среди цифр могли...
В админке по умолчанию выбрана валюта USD, и в настройках локализации выбрано значение для доллара 100000000