Plugin Directory

Changeset 2854582


Ignore:
Timestamp:
01/25/2023 05:37:34 PM (3 years ago)
Author:
shsham
Message:
  • Добавлено: маска ввода телефона для российских и других номеров
  • Мелкие правки
Location:
dadata-ru
Files:
12 added
2 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • dadata-ru/trunk/assets/main.js

    r2852907 r2854582  
    55    let hint = sh_data.dadata_hint;
    66    let minchars = sh_data.dadata_minchars;
    7     let dadata_use_mask = sh_data.dadata_use_mask;
    87    let ids_input = [
    98        ['dadata_custom_name', 'NAME', 'NAME'],  // id, type, parts
     
    143142    }
    144143
    145     if(dadata_use_mask){
    146         new Cleave('#billing_phone', {
    147             phone: true,
    148             phoneRegionCode: 'RU',
    149         });
    150         new Cleave('#dadata_custom_phone', {
    151             phone: true,
    152             phoneRegionCode: 'RU',
    153         });
    154     }
    155 
    156 
    157 
    158144});
    159145
    160    
     146
     147if(sh_data.dadata_use_mask) {
     148    document.addEventListener("DOMContentLoaded", function () {
     149        var phoneInputs = document.querySelectorAll('input#billing_phone, input#dadata_custom_phone');
     150
     151        var getInputNumbersValue = function (input) {
     152            // Return stripped input value — just numbers
     153            return input.value.replace(/\D/g, '');
     154        }
     155
     156        var onPhonePaste = function (e) {
     157            var input = e.target,
     158                inputNumbersValue = getInputNumbersValue(input);
     159            var pasted = e.clipboardData || window.clipboardData;
     160            if (pasted) {
     161                var pastedText = pasted.getData('Text');
     162                if (/\D/g.test(pastedText)) {
     163                    // Attempt to paste non-numeric symbol — remove all non-numeric symbols,
     164                    // formatting will be in onPhoneInput handler
     165                    input.value = inputNumbersValue;
     166                    return;
     167                }
     168            }
     169        }
     170
     171        var onPhoneInput = function (e) {
     172            var input = e.target,
     173                inputNumbersValue = getInputNumbersValue(input),
     174                selectionStart = input.selectionStart,
     175                formattedInputValue = "";
     176
     177            if (!inputNumbersValue) {
     178                return input.value = "";
     179            }
     180
     181            if (input.value.length != selectionStart) {
     182                // Editing in the middle of input, not last symbol
     183                if (e.data && /\D/g.test(e.data)) {
     184                    // Attempt to input non-numeric symbol
     185                    input.value = inputNumbersValue;
     186                }
     187                return;
     188            }
     189
     190            if (["7", "8", "9"].indexOf(inputNumbersValue[0]) > -1) {
     191                if (inputNumbersValue[0] == "9") inputNumbersValue = "7" + inputNumbersValue;
     192                var firstSymbols = (inputNumbersValue[0] == "8") ? "8" : "+7";
     193                formattedInputValue = input.value = firstSymbols + " ";
     194                if (inputNumbersValue.length > 1) {
     195                    formattedInputValue += '(' + inputNumbersValue.substring(1, 4);
     196                }
     197                if (inputNumbersValue.length >= 5) {
     198                    formattedInputValue += ') ' + inputNumbersValue.substring(4, 7);
     199                }
     200                if (inputNumbersValue.length >= 8) {
     201                    formattedInputValue += '-' + inputNumbersValue.substring(7, 9);
     202                }
     203                if (inputNumbersValue.length >= 10) {
     204                    formattedInputValue += '-' + inputNumbersValue.substring(9, 11);
     205                }
     206            } else {
     207                formattedInputValue = '+' + inputNumbersValue.substring(0, 16);
     208            }
     209            input.value = formattedInputValue;
     210        }
     211        var onPhoneKeyDown = function (e) {
     212            // Clear input after remove last symbol
     213            var inputValue = e.target.value.replace(/\D/g, '');
     214            if (e.keyCode == 8 && inputValue.length == 1) {
     215                e.target.value = "";
     216            }
     217        }
     218        for (var phoneInput of phoneInputs) {
     219            phoneInput.addEventListener('keydown', onPhoneKeyDown);
     220            phoneInput.addEventListener('input', onPhoneInput, false);
     221            phoneInput.addEventListener('paste', onPhonePaste, false);
     222        }
     223    })
     224}
     225
    161226     
  • dadata-ru/trunk/dadata-ru.php

    r2852907 r2854582  
    33 * Plugin Name: «Подсказки» от DaData.ru
    44 * Plugin URI: https://shafeev.net/plugins/podskazki-ot-dadata-ru
    5  * Description: Быстрый ввод адресов, компаний, банков, ФИО, email и ещё много чего.
     5 * Description: Быстрый ввод адресов, компаний, банков, ФИО, email и ещё много чего. Маска ввода телефона для российских и других номеров.
    66 * Text Domain: dadata-ru
    7  * Version: 1.0.4
     7 * Version: 1.0.5
    88 * Author: Shamil Shafeev
    99 * Author URI: https://shafeev.net/
     
    2929
    3030define("SHDADATA_PATH", plugin_dir_path(__FILE__));
    31 define("SHDADATA_VERSION", '1.0.4');
     31define("SHDADATA_VERSION", '1.0.5');
    3232
    3333
     
    5555    public function Shdadata_enqueue_scripts() {
    5656        wp_enqueue_script('shdadata-jquery-suggestions-min',  plugins_url( '/assets/jquery.suggestions.min.js', __FILE__), array('jquery'),SHDADATA_VERSION );
    57         wp_enqueue_script('cleave-min',  plugins_url( '/assets/cleave.min.js', __FILE__ ), array(),SHDADATA_VERSION );
    58         wp_enqueue_script('cleave-phone-ru',  plugins_url( '/assets/cleave-phone.ru.js', __FILE__ ), array(),SHDADATA_VERSION );
    5957        wp_enqueue_style('shdadata-main-css',  plugins_url( '/assets/main.css', __FILE__ ), array(), SHDADATA_VERSION );
    6058
     
    147145        add_settings_field(
    148146            'dadata_use_mask',
    149             'Выключить поддержку масок ввода',
     147            'Поддержка маски ввода телефонного номера',
    150148            [$this,'dadata_api_field_'],
    151149            'general',
  • dadata-ru/trunk/readme.txt

    r2852907 r2854582  
    44Tags: dadata, WooCommerce, dadata-ru, dadata.ru, shdadata, wpcf7
    55Tested up to: 6.1.1
    6 Stable tag: 1.0.4
     6Stable tag: 1.0.5
    77Requires PHP: 5.6
    88License: GPLv2 or later
     
    1111
    1212Интеграция сервиса «Подсказки» от DaData.ru. Позволяет подключить подсказки: автозаполнение полей ФИО, Адреса, данные по ИНН и тд.
     13Поддерживает возможность установить маску ввода телефонного номера.
    1314
    1415== Description ==
     
    1617Плагин позволяет подключить подсказки DaData.ru на своем сайте WordPress.
    1718Подсказки Dadata: автозаполнение полей ФИО, Адреса, данные по ИНН и тд.
     19Поддерживает возможность установки маски ввода телефонного номера у полей.
    1820
    1921**Демо**: [на сайте](https://demo.wpsham.ru/checkout/?add-to-cart=13)
     
    4446*   Быстрый ввод ОКВЭД.
    4547*   Быстрый ввод ОКПД.
     48*   Маска ввода телефона для российских и других номеров
    4649
    4750**Пример работы в Contact Form 7**
     
    6669== Changelog ==
    6770
     71= 1.0.5 =
     72* Добавлено: маска ввода телефона для российских и других номеров
     73* Мелкие правки
     74
    6875= 1.0.4 =
    6976* Добавлено форматирование номера телефона (Cleave.js)
Note: See TracChangeset for help on using the changeset viewer.