Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Валидация поля ввода, Textarea Validation 
:(
    Опции темы
t77
  Дата 2.9.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Доброе время суток.
Имеется поле ввода текста TEXTAREA, под которым расположенна кнопка.
При нажатии на кнопку, проверяю содержимое поле ввода. Если оно пустое, сообщаю об этом пользователю и ничего не делаю. Иначе отсылаю текст на сервер. 
Так вот проблема при валидации поля на наличие содержимого. Если внутри поля, просто нажать клавишу ENTER, то такая валидация не срабатывает:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <script language="javascript">
    function trim(str)
    {
        return str.replace(/^\s*|\s*$/g,"");
    }
    function sendFeedback()
    {
    debugger;
        if (trim(document.all.textarea_content.value) == "")
        {
            alert("Необходимо заполнить поле!");
            document.all.textarea_content.focus();
            return;
        }
        
        //Отправляем на сервер
    }
    </script>
</head>
<body>
    <center>
        <textarea id="textarea_content" cols="40" rows="10"></textarea>
        <br />
        <input type="button" value="submit" onclick="sendFeedback()"/>
    </center>
</body>
</html>


Почему, не срабатывает? Как отловить </BR> ?
PM MAIL   Вверх
Amphiluke
Дата 2.9.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Хм. Либо я чего-то не понял, либо всё работает как надо... Хоть сколько Enter'ов поставь.
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8" />
   <title>Template</title>
   <script type="text/javascript">
      function trim(str) {
         return str.replace(/^\s*|\s*$/g,"");
      }
      function sendFeedback() {
         if (trim(document.getElementById("textarea_content").value) == "") {
            alert("Необходимо заполнить поле!");
            document.getElementById("textarea_content").focus();
            return false;
         }
         //Отправляем на сервер
         return true;
      }
   </script>
</head>
<body>
   <form action="#" onsubmit="return sendFeedback();">
        <textarea id="textarea_content" cols="40" rows="10"></textarea>
        <br />
        <input type="submit" value="submit" />
   </form>
</body>
</html>

Нет?
PM   Вверх
t77
  Дата 2.9.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



У меня не работает...Может, потому что это не совсем реальный код.
На самом деле TEXTAREA вместе с кнопкой открываются в модальном окне.Может поэтому? 
Незнаю, что и сказать. Факт, что у меня не работает. При нажатии на ENTER, если продебагить, можно увидеть, что:
Код

document.all.feedback_content.value.length = 2


Это оно и есть, тоесть ENTER равен 10 и 13. 
Я никак не мог догнать как мне этот ENTER почистить.
Всетаки получилось! smile 
С каждым разом понимаю насколько мощная штука регулярные выражения!
Разобрался! 
Спасибо всем. 
Если кому интересно, привожу решения данной задачи:
Код

if (trim(document.all.textarea_content.value).replace(/\r\n/ig,'') == "")


Добавлено через 2 минуты и 18 секунд
document.all.feedback_content.value
это и есть
document.all.textarea_content.value
PM MAIL   Вверх
brother79
Дата 2.9.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 1
Всего: 6



Цитата(t77 @  2.9.2009,  12:55 Найти цитируемый пост)
Если кому интересно, привожу решения данной задачи:
Выделить всёкод Javascript
1:
    
if (trim(document.all.textarea_content.value).replace(/\r\n/ig,'') == "")



Я бы тебе лучше предложил 

Код

if (trim(document.all.textarea_content.value).replace(/\r\n\s/ig,'') == "")


Так надёжней smile


--------------------
PM MAIL WWW   Вверх
t77
Дата 2.9.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



brother79 ,
Объясните пожалуйста свое решение. Чем оно надежнее предыдущего ?
PM MAIL   Вверх
t77
  Дата 2.9.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Что то я поспешил с выводами. 
Регулярное выражение, описанное выше не работает. 
Если я ввожу подряд пробелы + ENTER, в рандомальном порядке.Тоесть может быть несколько ENTER-ов затем пробелы или наоборот. То некоторые из них не очищаются!!!
Нужна регулярка, которая находит везде и повсюду все пробелы и ENTER-ы и удаляет их. 
Исходя из документации регексов, смотрю таблицу метасимволов:
Код

^ - Соответствует началу строки. 

$ - Соответствует концу строки. 

* - Соответствует повторению предыдущего символа нуль или более раз. 

+ - Соответствует повторению предыдущего символа один или более раз. 

? - Соответствует повторению предыдущего символа нуль или один раз. 

. - Соответствует любому символу, кроме символа новой строки. 


и пишу следующее:
Код

trim(document.all.textarea_content.value).replace(/*\r*\n*\s/ig,'')

Не работает smile 
Помогите please.
PM MAIL   Вверх
Amphiluke
Дата 2.9.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Вот честное слово, во всех браузерах проверил, какие были
Код

      function trim(str) {
         return str.replace(/\s/g,"");
      }


Во всех случаях этого оказывается достаточно!
PM   Вверх
brother79
Дата 2.9.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 1
Всего: 6



Поторопился я, сбил меня с толку первый вар-нт

Можно так:

Цитата(Amphiluke @  2.9.2009,  18:04 Найти цитируемый пост)
return str.replace(/\s/g,"");


А я хотел предложить 

if (s.match(/\S/)) 

в условие засунуть. 

или 

if (s.match(/[^\s]/)) 

истина когда строка не пустая



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.