Показать сообщение отдельно
  #1 (permalink)  
Старый 10.05.2021, 08:03
Профессор
Отправить личное сообщение для Vaska Посмотреть профиль Найти все сообщения от Vaska
 
Регистрация: 08.05.2017
Сообщений: 178

Проверка textarea на запрет ввода элементов ссылки
Приветствую!

На странице есть форма отправки сообщений.
На сервере добавил проверку вводимого содержания на наличие элементов ссылки и все элементы ссылок или названия доменных имен вырезаются. Если сообщение содержало только ссылку, то сохраняется пустое сообщение, что не есть хорошо.
Для PHP использую выражение:
$exge = '@((https?://)?([-\\w]+\\.[-\\w\\.]+)+\\w(:\\d+)?(/([-\\w/_\\.]*(\\?\\S+)?)?)*)(?:[?&][^?$]+=[^?&]*)*@i';

Хотелось бы, что бы выражение можно было переписать под использование в скрипте. Это выражение очень хорошо режет любые варианты ссылок и названия доменных имен.

Нужно сделать проверку формы скриптом на странице, на содержание элементов ссылки и если такие элементы есть в поле textarea, тогда выводить сообщение "Ссылки запрещены" и сообщение не должно отправляться.

Сейчас на странице есть скрипт, который проверяет количество вводимых символов, подсчитывает их и если символов 0 или больше 200, тогда выводит под формой в dstype="error_msg" сообщение "Вы не указали вопрос" или "Вопрос не должен превышать 200 символов" и сообщение не отправляется. Это правильно. Если ошибок в форме нет, тогда сообщение должно отправляться.
Нужно, чтобы сообщение "Ссылки запрещены" выводилось в том же dstype="error_msg", если это не будет мешать выводу других сообщений об ошибке количества символов.
Заранее спасибо, откликнувшимся!

<form method="post" id="save_consult_form2" action='goods/save_consult'>
	<div class="comment-add"><textarea id="textfield3" name="content" type="text"></textarea></div>
	<div class="comment-act">
		<a href="JavaScript:void(0);" dstype="consult_submit" class="dss-btn">Отправить</a>
	</div>
	<span id="consultcharcount"></span> <span dstype="error_msg"></span>
</form>


$(function () {
		$('a[dstype="consult_submit"]').click(function () {
			$('#save_consult_form2').submit();
		});
		
		$('#save_consult_form2').validate({
			errorPlacement: function (error, element) {
				$('span[dstype="error_msg"]').append(error);
			},

			submitHandler: function (form) {
				ds_ajaxpost('save_consult_form2');				
				},
				
			onkeyup: false,
			rules: {
				content: {
					required: true,
					maxlength: 200
				}
			},
            messages : {
                content : {
                    required : 'Вы не указали вопрос',
                    maxlength:'Вопрос не должен превышать 200 символов.'
				}
			}
		});
		
		// textarea подсчет символов
		$("#textfield3").charCount({
			allowed: 200,
			warning: 10,
			counterContainerID: 'consultcharcount',
			firstCounterText: 'Вы можете ввести ещё до',
			endCounterText: 'символов.',
			errorCounterText: 'Текст вопроса превышен на'
		});
	});

Последний раз редактировалось Vaska, 10.05.2021 в 09:26.
Ответить с цитированием