Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.07.2012, 20:10
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Скрипт для автоцензуры текстовых полей
Помогите доделать скрипт для автоцензуры заголовков тем (или любого другого текстового поля).
Устал от бредовых заголовков на своём форуме.
Нужно, чтобы, как только пользователь наберёт стоп-слово, скрипт его тут же удалял и выводил модальное окно с объяснением, почему это не есть гут, что, в принципе, получилось сделать.
Застрял на:
- запрете слов, в которых смешаны кириллические и латинские буквы, и смеси слов с цифрами?
- замене первой буквы на заглавную? (без text-transform из CSS, скриптово)
- удалении точки, если она является самым последним символом в строке?

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=content-type content="text/html; charset=utf-8">

<script type=text/javascript>
stopWords=['помогите','помагите','памогите','памагите','срочно','горю',
           'пожалуйста','пожалуста','пжл','пож.','плиз','хелп','надо',
           'нужно','нужна','необходим','нуждаюсь','прошу','помощи',
		   'нужна ваша помощь','хочу','хотелось бы','как бы','как-бы',
		   'какбы','завтра','умоляю','подскажите','нужен совет','!',
		   'ребята','люди','уважаемые','окажите помощь','здравствуйте',
		   'здраствуйте','спасибо','спс','благодар','болею','болел',
		   'больниц','беремена','попросил','такой','такая','такое',
		   'такие','help','plz','pls','please','pleas','plez','sos']

function test(obj)
{   obj=document.getElementById("abcd");
    currentText=obj.value;
    for(var i=0; i<stopWords.length; i++)
        {re=new RegExp(stopWords[i],"gi");
         if(re.test(currentText))
            {temp="";
             for(var j=0; j<stopWords[i].length; j++){temp+=""}
             currentText=currentText.replace(re,temp);
             obj.value=currentText;
             alert('Уважаемый пользователь!\n\nСогласно Правилам форума, '+
                   'в Названии сообщения не\nдопустимы слова и выражения, '+
                   'не отражающие его суть:\n\nПомогите, Срочно, '+
                   'Пожалуйста, Плиз, Хелп, Help, SOS\nи т.д. и т.п.'+
                   '\n\nАдминистрация настоятельно рекомендует Вам впредь '+
                   'не\nнарушать Правила форума, в противном случае на Вас '+
                   'будут\nналожены санкции, вплоть до вечного бана.');
           }
        }
}
</script>
  
<body>
<p>Введите любое из слов:<br />
<b>помогите, срочно, горю, пожалуйста, плиз, хелп, help, sos</b></p>
<input style="width: 400px;" placeholder="Здесь" id="abcd" onkeyup="test(this)" onchange="test(this)">
</body>
</html>

Последний раз редактировалось Demath, 20.07.2012 в 00:11. Причина: Исправил ошибку
Ответить с цитированием
  #2 (permalink)  
Старый 19.07.2012, 22:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script type=text/javascript>
stopWords=['помогите','помагите','памогите','памагите','срочно','горю',
           'пожалуйста','пожалуста','пжл','пож.','плиз','хелп','надо',
           'нужно','нужна','необходим','нуждаюсь','прошу','помощи',
		   'нужна ваша помощь','хочу','хотелось бы','как бы','как-бы',
		   'какбы','завтра','умоляю','подскажите','нужен совет','!',
		   'ребята','люди','уважаемые','окажите помощь','здравствуйте',
		   'здраствуйте','спасибо','спс','благодар','болею','болел',
		   'больниц','беремена','попросил','такой','такая','такое',
		   'такие','help','plz','pls','please','pleas','plez','sos']

function test2(a,b) {var FlagStop=false;
      if(a.indexOf(b)!=-1) {FlagStop=true;
      a=a.replace(b,'...');
      a=test2(a,b);alert(a)
      }
 return a;
}

function test(obj)
{   obj=document.getElementById("abcd");
    currentText=obj.value;

    for(var i=0; i<stopWords.length; i++){
        currentText=test2(currentText,stopWords[i])
    }
	  if(currentText!=obj.value){
             alert('Уважаемый пользователь!\n\nСогласно Правилам форума, '+
                   'в Названии сообщения не\nдопустимы слова и выражения, '+
                   'не отражающие его суть:\n\nПомогите, Срочно, '+
                   'Пожалуйста, Плиз, Хелп, Help, SOS\nи т.д. и т.п.'+
                   '\n\nАдминистрация настоятельно рекомендует Вам впредь '+
                   'не\nнарушать Правила форума, в противном случае на Вас '+
                   'будут\nналожены санкции, вплоть до вечного бана.');
           }

}
</script>

Последний раз редактировалось Deff, 20.07.2012 в 00:46.
Ответить с цитированием
  #3 (permalink)  
Старый 19.07.2012, 23:10
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff, простите, не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 19.07.2012, 23:29
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff, а что Вы добавили? В смысле, что должно происходить?
Я ввожу стоп-слово, но ничего не происходит(

Извините, за идиотский вопрос.
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2012, 23:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=content-type content="text/html; charset=utf-8">

<script type=text/javascript>
stopWords=['помогите','помагите','памогите','памагите','срочно','горю',
           'пожалуйста','пожалуста','пжл','пож.','плиз','хелп','надо',
           'нужно','нужна','необходим','нуждаюсь','прошу','помощи',
		   'нужна ваша помощь','хочу','хотелось бы','как бы','как-бы',
		   'какбы','завтра','умоляю','подскажите','нужен совет','!',
		   'ребята','люди','уважаемые','окажите помощь','здравствуйте',
		   'здраствуйте','спасибо','спс','благодар','болею','болел',
		   'больниц','беремена','попросил','такой','такая','такое',
		   'такие','help','plz','pls','please','pleas','plez','sos']

function test2(a,b) {var FlagStop=false;
      if(a.indexOf(b)!=-1) {FlagStop=true;
      a=a.replace(b,'...');
      a=test2(a,b);//alert(a)
      }
 return a;
}

function test(obj)
{   obj=document.getElementById("abcd");
    var a=obj.value;
    obj.value=(a.substr(0,1).toUpperCase(0)+a.substr(1))
    currentText=obj.value;

    for(var i=0; i<stopWords.length; i++){
        currentText=test2(currentText,stopWords[i])
    }        alert('Выходной текст с правками: \n'+currentText)
	  if(currentText!=obj.value){
             alert('Уважаемый пользователь!\n\nСогласно Правилам форума, '+
                   'в Названии сообщения не\nдопустимы слова и выражения, '+
                   'не отражающие его суть:\n\nПомогите, Срочно, '+
                   'Пожалуйста, Плиз, Хелп, Help, SOS\nи т.д. и т.п.'+
                   '\n\nАдминистрация настоятельно рекомендует Вам впредь '+
                   'не\nнарушать Правила форума, в противном случае на Вас '+
                   'будут\nналожены санкции, вплоть до вечного бана.');
           }

}
</script>
  
<body>
<p>Введите любое из слов:<br />
<b>помогите, срочно, горю, пожалуйста, плиз, хелп, help, sos</b></p>
<textarea style="width: 400px; height: 100px" id="abcd" onkeyup="test(this)" onchange="test(this)"></textarea>
</body>
</html>

Последний раз редактировалось Deff, 20.07.2012 в 01:13.
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2012, 00:36
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff,

Не совсем понимаю, что должна делать эта функция?

function test2(a,b) {var FlagStop=false;
      if(a.indexOf(b)!=-1) {FlagStop=true;
      a=a.replace(b,'...');
      a=test2(a);//alert(a)
      }
 return a;
}
Ответить с цитированием
  #7 (permalink)  
Старый 20.07.2012, 00:40
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Demath,
a - это входной текст - b - проверяемое слово
Если оно есть - входной текст трансформируется - вместо запретного слова ставицо троеточие и идет повторная проверка на это же слово - если этого слова более нет - в исходный текст возвращается преобразованный текст с удалением(или без, если слово не найдено)
Попробуйте ввести несколько одинаковых недопустимых слов в тексте - должно удалить все (вбейте связный текст

Ксать поправил - в рекурсивном Вызове забыл второй аргумент b (* a=test2(a,b);//alert(a)

Ксать я бы проверял по вводу символов с клавиатуры и при отправке по нажатию кнопки - а после проверки - если все удачно - субмитил, если нет = то только извещение, (* можно заодно и трансформировать текст в textarea вместе с Выводом уведомления - АLERT - автоматом вызывает onchange= и идет повторное уведомление

Последний раз редактировалось Deff, 20.07.2012 в 00:54.
Ответить с цитированием
  #8 (permalink)  
Старый 20.07.2012, 00:57
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff, спасибо, понял.

Мой вариант в моём первом посте неверен?
Просто хочу осознать свои ошибки.

Как заменить самую первую букву в <input type=text> на заглавную сразу после ввода пользователем?

Нашёл на этом сайте готовую функцию http://learn.javascript.ru/string#смена-регистра, но не догоняю, как её использовать((
Ответить с цитированием
  #9 (permalink)  
Старый 20.07.2012, 01:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Demath,
Да не смотрел тщательно, но в нём однозначно будут сложности про Ваши хитрые Слова и на повтор того же слова при вводе копированием - не будет проверки
Ответить с цитированием
  #10 (permalink)  
Старый 20.07.2012, 01:11
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Deff
но в нём однозначно будут сложности про Ваши хитрые Слова и на повтор того же слова при вводе копированием - не будет проверки
Проверил - скрипт работает при копипасте.

Или я Вас не так понял?

Последний раз редактировалось Demath, 24.07.2012 в 12:30.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт для вывода текста поверх картинки sergeus Работа 1 19.02.2012 06:01
Требуется написать скрипт защиты от удаления товара из корзины для Virtuemart umitru Работа 19 01.02.2012 14:30
Как превратить скрипт в плагин для jquery? lilumi jQuery 8 16.09.2011 17:39
Подскажите скрипт для загрузки фото на сервер Mapshal Общие вопросы Javascript 0 13.08.2011 17:49
Скрипт для плагина к Download Master ponand Общие вопросы Javascript 21 05.01.2009 22:12