Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать обратный отсчет символов в поле формы?
 
 автор: ruler   (29.10.2007 в 22:36)   письмо автору
 
 

Наприер в БД гостевой с атрибутом tinytext вписывается только 255 символов.
У меня два вопроса:
1. Как можно реализовать обратный отсчет символов (например 255, 254, 253 и т.д.), так чтобы user видел этот отчет?
2. Как сделать чтобы user не мог вписать больше данных, а при привешении лимита, ему либо выводило предупреждение сразу , либо потом при добавление сообщения в БД, либо, что еще лудше просто не давала вбить символы больше чем задано лимитом?

Заранее благодарен!

   
 
 автор: ProtoTeeP   (29.10.2007 в 22:45)   письмо автору
 
   для: ruler   (29.10.2007 в 22:36)
 

Вообще тебе в другой раздел. Необходимо javascript

максимальное значение поле ввода ты можешь задать с помощью maxlength
например,


<input name="text" type="text"  maxlength="5" />

   
 
 автор: Ruler   (29.10.2007 в 22:50)   письмо автору
 
   для: ProtoTeeP   (29.10.2007 в 22:45)
 

>

><input name="text" type="text"  maxlength="5" />
>

Ну это понятно, а если поле

<TEXTAREA type=text name=msg COLS="30" ROWS="3"></TEXTAREA>

Тогда как ограничить

   
 
 автор: ProtoTeeP   (29.10.2007 в 23:02)   письмо автору
 
   для: Ruler   (29.10.2007 в 22:50)
 

если только через js (я его не знаю)


а если через PHP
примерно так:

<?
$max_msg 
200;
    if(!empty(
$_POST['msg'])  &&  strlen($_POST['msg']) > $max_msg)
    {
    echo 
'Сообщение слишком длинное. Максимально разрешено: '.$max_msg;
    exit();
    }
?>

   
 
 автор: Ruler   (29.10.2007 в 23:04)   письмо автору
 
   для: ProtoTeeP   (29.10.2007 в 23:02)
 

Спасибо, и за это!
Стрно а что я сам то не додумался. Наверно просто не хотел немножко подумать.

   
 
 автор: bronenos   (29.10.2007 в 23:27)   письмо автору
 
   для: Ruler   (29.10.2007 в 22:50)
 

<TEXTAREA type=text name=msg COLS="30" ROWS="3" onKeyUp="this.value=this.value.substr(0, 100)"></TEXTAREA>

   
 
 автор: Faraon   (30.10.2007 в 08:51)   письмо автору
 
   для: ruler   (29.10.2007 в 22:36)
 

>что еще лудше просто не давала вбить символы больше чем задано лимитом?


<input type=text name=name maxlength="200">

   
 
 автор: provodnik   (30.10.2007 в 10:05)   письмо автору
 
   для: Faraon   (30.10.2007 в 08:51)
 

Посмотрите как сделано на этой странице: http://sprosite.ru/board/add/ . Там и для текстовых полей и для textarea.

   
 
 автор: Faraon   (30.10.2007 в 15:01)   письмо автору
 
   для: ruler   (29.10.2007 в 22:36)
 

>1. Как можно реализовать обратный отсчет символов (например 255, 254, 253 и т.д.), так чтобы user видел этот отчет?
Что типа такого

<html>
<head></head>
<body onload="count()">
<div id="con"></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
    var i=255;
    var h;
    var a=document.getElementById('con');
    function count()
    {
        a.innerHTML="Отсчет  "+i;
        h=setInterval('cons()',1000);
    }
    function cons()
    {    i--;
        a.innerHTML="Отсчет  "+i;
        if (i<1)
        {
            clearInterval(h);

            a.innerHTML="Отсчет закончен!";
        }
    }
//-->
</SCRIPT>
</body>
</html>

Или Вы имели ввиду отсчет набранных символов ?

   
 
 автор: sim5   (30.10.2007 в 15:08)   письмо автору
 
   для: Faraon   (30.10.2007 в 15:01)
 

Можно проще.

<textarea cols="30" rows="3" onkeyup="getElementById('id').innerHTML = 255 - this.value.length"></textarea>

   
 
 автор: Faraon   (30.10.2007 в 16:08)   письмо автору
 
   для: sim5   (30.10.2007 в 15:08)
 

И добавить, чтобы в минус не пошло ;)

<textarea cols="30" rows="3" onkeypress="getElementById('id').innerHTML = 255 - this.value.length;this.value=this.value.substr(0, 255)"></textarea>
<br>
<div id="id"></div>

   
 
 автор: sim5   (30.10.2007 в 16:25)   письмо автору
 
   для: Faraon   (30.10.2007 в 16:08)
 

Точно, упустил.

   
 
 автор: Ruler   (30.10.2007 в 18:25)   письмо автору
 
   для: sim5   (30.10.2007 в 16:25)
 

Спасибо за большое количество вариантов, Последний мне очень помог.
<textarea cols="30" rows="3" onkeypress="getElementById('id').innerHTML = 255 - this.value.length;this.value=this.value.substr(0, 255)"></textarea> 
<br> 
<div id="id"></div> 

А как теперь здесь сделать чтобы при нажатии клавиши Backspace и Delete user видел этот же отсчет, но с увеличениме(24,25,26 и т.д.)

   
 
 автор: sim5   (31.10.2007 в 05:29)   письмо автору
 
   для: Ruler   (30.10.2007 в 18:25)
 

Пошла масть, теперь реверсивного счетчика охота.) А зачем, если разговор про это же поле, то при удалении сивола, показания <div id="id"></div> увеличатся на единицу, правда при повторном нажатии, это маленькое неудобство, но считать будет правильно. Записать лучше так, тогда не будет отрицательного значения в показании:

<textarea cols="30" rows="3" onkeypress="if (this.value.length <= 255) getElementById('id').innerHTML = 255 - this.value.length; else return false;"></textarea>  
<br>  
<div id="id"></div>

Если нужно будет сброс делать, то лучше все в отдельной функции описать, мне так кажется.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования