Как мне ввести только ссылку с одного сайта? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть еще один вопрос. Как ограничить форму ввода только тем, чтобы принимать ссылки с определенного веб-сайта, например, Youtube должен включать эту ссылку https://www.youtube.com/---, и, нажав кнопку добавления, вы разрешите только этот тип ссылки в списке , Я искал везде, но не мог ничего найти.

<script>
    var input = document.getElementById('geturl');
    var button = document.getElementById('addlist');



    var addurl = function() {
        var url = input.value;
        var li = document.createElement('li');
        li.innerHTML = url;
        song = document.getElementById('songurl');



        if (url.length == 0) {
            alert('Please input data in the field.');
            console.log('No text in input.');

        } else {
            song.appendChild(li);
            document.getElementById("geturl").value = "";
            console.log('Url added');
        }
    }

    button.onclick = addurl;

</script>

</-->
<body>
<header>
    <nav>
        <div class="vidplay-title">
            <div class="logo">
                <i class="fa fa-forward" style="font-size:24px"></i>
            </div>
            <div class="title">
                <h2>Music Share</h2>
            </div>  
        </div>
    </nav>
</header>   
<section id="content">
<form name="form">
    <div class="search">
    <input type="text" placeholder="paste url..." id="geturl">
    <input type="submit" value="Add" id="addlist" onclick="return empty()" name="url">

    </div>
    <article>
        <div class="container" id=#list>
            <h5>Share your youtube url list and enjoy.</h5>
            <div class="scroll list-item-group">
                <div class="song-list">
                    <ol class="song" id="songurl">
                </div>
            </div>

            <button class="btn btn-primary">Share</button>
    </article>




    </div>
    </form>


</section>
<section>
    <footer>
        <div class="footer">
            <p>@Copyright</p>
        </div>

    </footer>
</section>

Ответы [ 4 ]

2 голосов
/ 26 февраля 2020

Используйте, например, startsWith() (или регулярное выражение):

if (url.length == 0) {
   alert('Please input data in the field.');
   return;
}
if (!url.startsWith("https://www.youtube.com/")) {
   alert("Not a YouTube link.");
   return;
}
song.appendChild(li);
document.getElementById("geturl").value = "";
// etc...
1 голос
/ 26 февраля 2020

Вы можете использовать регулярные выражения, чтобы получить более общий валидатор, поскольку все URL не выглядят так https://youtube.com/

var pattern = /^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
if (!url.match(pattern)) {
  // Invalid link
}
0 голосов
/ 26 февраля 2020

Простой ответ - принять только частичные URL-адреса или, в частности, бит пути после https://youtube.com вместо полного URL-адреса

0 голосов
/ 26 февраля 2020

Проверьте строку ввода, если она начинается с вашего желаемого URL, например, https://youtube.com/

Так же, как в вашем примере кода, с if(url.length == 0). Но вместо длины вы можете использовать регулярное выражение для проверки ввода.

var pattern = /* your regular expression */;
if (!url.match(pattern)) {
    alert("wrong url");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...