блокировать определенные слова в форме поиска

#javascript #php #arrays #wordpress

#javascript #php #массивы #wordpress

Вопрос:

Я искал в Интернете, но не могу найти ничего, что делало бы то, что я хочу. Я хотел бы получить от вашей помощи

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

 <div class="header-search">
    <form method="get" id="searchform" action="/?s=">
        <input class="input-group-field" value="Search..." name="s" id="s" onfocus="if (this.value == 'Search...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search...';}" type="text">

        <input class="fa fa-search" type="submit" id="searchsubmit" value="">
    </form>
</div>
  

Я хочу заблокировать такие слова, как xxx, xnxx, porn Я хочу, чтобы при поиске этих вещей форма не выполняла поиск, оставляя какие-либо предупреждения, предупреждающие, что это невозможно выполнить

Комментарии:

1. Вы хотите это php ввести или js ввести, потому что я не вижу никакого php кода?

2. Для этого есть несколько способов. Вы можете адаптировать свою часть PHP в этом файле, которая выполняется при запуске поиска, или привязать событие JavaScript к панели поиска, которая анализирует введенный текст при каждом нажатии клавиши и отображает это предупреждение. Пожалуйста, имейте в виду, что каждый может переопределить поведение JavaScript в своем браузере.

3. это тема WordPress, но я делюсь только формой, и я хочу знать, как я могу это сделать

4. и, кроме того, javascript не мог обойтись без чего-то другого, но с javascript было бы хорошо, если вы можете мне помочь, я бы с удовольствием @Johannes

Ответ №1:

Что-то вроде следующего jQuery / Javascript должно работать просто отлично.

 jQuery(document).ready(function( $ ) {
    var searchBox = $("#searchform #s").val(); //Get value of search field
    var searchButton = $("#searchform #searchsubmit"); //Get search button element

    var search_string_check = function(searchBox,searchButton) {

        var blockedWords = "xxx,porn,sex"; //define blocked words here
        blockedWords = blockedWords.split(','); //turn string into array

        if(blockedWords.includes(searchBox)){ //check if the searched value is in the blocked words list
            searchButton.attr("disabled", ""); //if yes disable the button
            alert("Your search contains a blocked word: "   searchBox   ". To continue your search please remove the blocked word."); //alert saying they cannot search for their entered blocked word
        } else {
            searchButton.removeAttr("disabled"); //if no remove disabled button
        }
    }

    search_string_check(searchBox,searchButton); //fire the function

    $('#searchform #s').change(function() { //on change of the search box value do something
        searchBox = $("#searchform #s").val(); //Get value of search field
      search_string_check(searchBox,searchButton); //fire the function
    });
});
  

Возможно, вы предпочтете сделать это при нажатии клавиши вверх или вниз вместо простого изменения значения, это зависит от вас, если это так, замените последнюю часть кода на:

 $('#searchform #s').keyup(function() { //on change of the search box value do something
    search_string_check(searchBox,searchButton); //fire the function
}
  

Комментарии:

1. [Неперехваченная ошибка синтаксиса: отсутствует ) после списка аргументов] Я не знаю, почему вы выдаете эту ошибку в console.log

2. Отредактировано, не хватало $ для переменных в начале

3. он по-прежнему выдает мне ту же ошибку, и я ставлю) после search_string_check (SearchBox, searchButton); // запустите функцию }) здесь, и ошибка была удалена, но появилась еще одна, я оставляю ее

4. searchform.js:14 Неперехваченная ошибка типа: searchButton.removeAttribute не является функцией в search_string_check (searchform.js:14) в HTMLDocument.<анонимный> (searchform.js:18) в i (jquery.js:2) в Object.fireWith [как resolveWith] (jquery.js:2) в Function.ready (jquery.js:2) в HTMLDocument. K (jquery.js: 2)

5. это строка 14 в коде [searchButton.removeAttribute («отключено»);]