Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2016, 22:24
Новичок на форуме
Отправить личное сообщение для zhemkan Посмотреть профиль Найти все сообщения от zhemkan
 
Регистрация: 13.08.2016
Сообщений: 6

Минимальное ограничение на количество символов
Всем привет!
Бьюсь уже который час, а задачу решить не могу. Установлен CKeditor (пробовал и другие wysiwyg-редакторы). Необходимо сделать проверку на минимальное количество символов в поле.
Код:
function validateform()
	{
		var errors=0;
		var dlina = 0; 
		dlina = document.getElementById('n_text').value.length;
		if (dlina<200)
			errors=2;
		
		
		if (errors==2)
		{
			alert ("Слишком мало символов!");	
			return false;
		}
		else
		{
			return true;
		}
	}


<form method="POST" action="<?php echo $_SERVER['REQUEST_URI']; ?>" onsubmit="return validateform()">
<div class="reg_tr">
		<textarea cols="45" rows="5" name="n_text" class="reg_textarea" id="n_text">Текст...</textarea>
	</div>	
<input type="submit" value="Отправить">	
	<script type="text/javascript">
		CKEDITOR.replace( 'n_text');
	</script>	
	</form>


Так вот после загрузки страницы при вводе необходимого количества символов в редакторе и после нажатия на кнопку "Отправить" я получаю сообщение об ошибке. После повторного нажатия на кнопку "Отправить" - успешный результат.

Приблизительный принцип работы wysiwyg-редакторов я понимаю, знаю, что мой textarea подменяется другим. Как мне сделать так, чтобы после нажатия на кнопку "Отправить" система сразу получала актуальное количество символов в textarea? Согласен даже на грабли (имитация двойного нажатия или что-то еще), но мне очень необходимо избавиться от двойного нажатия для отправки сообщения.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2016, 01:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,671

Сообщение от zhemkan Посмотреть сообщение
я получаю сообщение об ошибке
Очень информативно... сообщением не желаешь поделиться... помогай себе сам тогда...
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2016, 01:12
Новичок на форуме
Отправить личное сообщение для zhemkan Посмотреть профиль Найти все сообщения от zhemkan
 
Регистрация: 13.08.2016
Сообщений: 6

Сообщение от Rise Посмотреть сообщение
Очень информативно... сообщением не желаешь поделиться... помогай себе сам тогда...
Все указано, достаточно лишь прочесть код внимательно. Под ошибкой понимается алерт:
alert ("Слишком мало символов!");
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2016, 01:22
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,671

Сообщение от zhemkan Посмотреть сообщение
Под ошибкой понимается алерт
Какое-то примитивное понимание ошибок... это как-бы не ошибка ну да ладно...
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2016, 06:55
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Rise, в смысле он сам ее генерит и сам же получает. )))

ТС, тебе надо запустить валидацию полей формы перед отправкой.

var MAXNTEXTLENGTH = 200;

form.addEventlistener('submit',function(e){

    if(form.n_text.value.trim().length<MAXNTEXTLENGTH) {
        e.preventDefault();
        alert('Text must be longer than '+ MAXNTEXTLENGTH +' characters');
        return false;
    }

});


Или типа того. Только придумай что-нибудь другое вместо алерта. Какой-нить элемент показывай с текстиком. Я уж не говорю о нормальной валидации тут с инвалидами и подсказками, но алерт - это серпом по яйкам юзера.

Последний раз редактировалось warren buffet, 14.08.2016 в 06:57.
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2016, 07:10
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Если у тебя много проверок, типа я заметил номер в errors, то раздели

var MAXNTEXTLENGTH = 200,

abuse='fuck,suck,dick,pussy',

msgs={
    2:'Text must be longer than '+ MAXNTEXTLENGTH +' characters',
    3:'Text should not contains words like '+abuse,
},

validate=function(){

    var txt = form.n_text.value.trim();

    if(txt.length<MAXNTEXTLENGTH) throw 2;

};

form.addEventlistener('submit',function(e){

    try{
        validate();
    }
    catch(msgn){
        e.preventDefault();
        alert(msgs[msgn]);
        return false;
    };

});
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2016, 14:24
Новичок на форуме
Отправить личное сообщение для zhemkan Посмотреть профиль Найти все сообщения от zhemkan
 
Регистрация: 13.08.2016
Сообщений: 6

<script>
function validateform()
	{
		var MAXNTEXTLENGTH = 200,

abuse='fuck,suck,dick,pussy',

msgs={
    2:'Text must be longer than '+ MAXNTEXTLENGTH +' characters',
    3:'Text should not contains words like '+abuse,
},

validate=function(){

    var txt = form.n_text.value.trim();

    if(txt.length<MAXNTEXTLENGTH) throw 2;

};

form.addEventlistener('submit',function(e){

    try{
        validate();
    }
    catch(msgn){
        e.preventDefault();
        alert(msgs[msgn]);
        return false;
    };

});
}
</script>


или

<script>
function validateform()
	{
var MAXNTEXTLENGTH = 200;

form.addEventlistener('submit',function(e){

    if(form.n_text.value.trim().length<MAXNTEXTLENGTH) {
        e.preventDefault();
        alert('Text must be longer than '+ MAXNTEXTLENGTH +' characters');
        return false;
    }

});	
}
</script>


не вызывают вообще никаких реакций при выполнении.

Ckeditor создает поверх моего textarea свой Body внутри Iframe. Актуальное количество символов передается в мой textarea только после выполнения функции.
Я добавил alert (dlina);, сразу после загрузки страницы я нажимаю "Отправить", получаю в окошке цифру 8, что соответствует кол-ву символов в строке "Текст...", который по умолчанию загружается в textarea при загрузки страницы. Если я добавлю еще 2 символа после "Текст...", то по нажатию "Отправить" я снова вижу 8, однако, если я ничего не изменяю, и снова нажимаю на "Отправить", то уже получаю актуальное значение - 10. И так всегда - актуальное значение я вижу только после двойного нажатия (двойного запуска функции).
Как избавиться от этого, учитывая такую особенность ckeditor?

Последний раз редактировалось zhemkan, 14.08.2016 в 14:35.
Ответить с цитированием
  #8 (permalink)  
Старый 15.08.2016, 11:25
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от zhemkan
Актуальное количество символов передается в мой textarea только после выполнения функции.
Количество символов передается? Короче, читай мануал на свой едитор. Если он не передает текст в поле из своей лапши после каждого действия в лапше, то значит что-то там настроено/сконфигурировано/нарисовано у тебя неправильно.
Ответить с цитированием
  #9 (permalink)  
Старый 15.08.2016, 13:58
Новичок на форуме
Отправить личное сообщение для zhemkan Посмотреть профиль Найти все сообщения от zhemkan
 
Регистрация: 13.08.2016
Сообщений: 6

Сообщение от warren buffet Посмотреть сообщение
Количество символов передается? Короче, читай мануал на свой едитор. Если он не передает текст в поле из своей лапши после каждого действия в лапше, то значит что-то там настроено/сконфигурировано/нарисовано у тебя неправильно.
Настроено и сконфигурировано все "по умолчанию", так, как это предусматривает разработчик эдитора.
Ответить с цитированием
  #10 (permalink)  
Старый 15.08.2016, 15:11
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Значит в textarea лежит в точности тот текст, который в каше едитора, ибо по submit ты имеешь право отгрузить форму со всем что ввел. А с твоих слов выходит, что уходит пустое поле.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка скриптом на минимальное количество символов sergofedor06 Элементы интерфейса 3 18.10.2018 14:18
Задать количество символов перед номером страницы! Teamur Общие вопросы Javascript 24 30.12.2015 21:58
Не показывает количество символов, работа со строками, форма для регистраци kvadratnt Общие вопросы Javascript 4 11.12.2012 23:15
количество символов ivanweb jQuery 14 13.09.2012 16:26
Ограничить количество символов в textarea iNfantry jQuery 2 14.05.2012 11:35