#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 («отключено»);]