Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Здравствуйте! 

 

На странице с формой есть поле input name="url" для указания веб-сайта 

Ссылки указываются без http

Как при нажатии кнопки "отправить" произвести проверку, если в поле name="url" введена ссылка на веб-сайт без http, тогда добавить и сохранить. 

Пробовал что-то придумать по типу масок для телефона и даты, но ничего не вышло 

Ссылка на сообщение
Поделиться на другие сайты

Нашел вот такой код

	$('input[name=url]').keyup(function () {
        if (  ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') ) {
            $(this).val('http://' + $(this).val());
        }
    });	

Все конечно хорошо и работает

 

Что если в это поле вставляют ссылку типа mailto: и tel:? 

Дописал так

	$('input[name=url]').keyup(function () {
        if (  ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') && ($(this).val().substr(0, 7) != 'mailto:') && ($(this).val().substr(0, 4) != 'tel:') ) {
            $(this).val('http://' + $(this).val());
        }
    });	

 

Тоже работает

 

Теперь вопрос другой, так как эта форма заполняется поставщиком или представителем, то возможно будут и глубокие ссылки типа tg://, whatsapp://, skype:// viber:// 

 

В админке я создал поле с разрешенными префиксами и сохраняю их в json типа ["mailto","tel"]

Далее проверка на php

function validate_url_format($url) {
    $parsed_url = parse_url($url);

    if(!$parsed_url) {
        return false;
    }

    if(!isset($parsed_url['scheme'])) {
        return false;
    }

    if(!isset($parsed_url['host']) && !isset($parsed_url['path'])) {
        return false;
    }

    $prefix = $parsed_url['scheme'];

    if(!in_array($prefix, get_links_allowed_prefixes())) {
        return false;
    }

    return true;
}

function get_links_allowed_prefixes() {
    global $settings;

    return array_merge(['http', 'https'], $settings->links_allowed_prefixes);
}

Как мне лучше сделать, думаю, что не на JS, а на php

 

Проверку, если scheme пустая и не prefix добавить http:// 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...