Есть на 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 во второй.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости