Jump to content

Recommended Posts

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

 

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

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

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

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

Link to post
Share on other sites

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

	$('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:// 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...