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

HTML+CSS+JavaScript

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

 

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

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

тема: TEXTAREA
 
 автор: Jura   (27.03.2006 в 13:26)   письмо автору
 
 

Добрый день. Прошу прощения за неоригинальность, но есть следующая проблема.

Прочитал пару темок, но нашел некоторые неточности. К сожалению с js знаком только в общих чертах, поэтому ХЕЛП.

Просмотрел http://softtime.ru/forum/read.php?id_forum=4&id_theme=12042&page=1
http://softtime.ru/forum/read.php?id_forum=4&id_theme=12074&page=1

Но есть более хороший и качественный код, спасибо Билайну...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script language="JavaScript" type="text/javascript">
<!--
function reloadPage(init) {
 if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
   document.pgW=innerWidth; document.pgH=innerHeight; onresize=reloadPage; }}
 else if (innerWidth!=document.pgW || innerHeight!=document.pgH) location.reload();
 }
reloadPage(true);
function openBrWind(url,name,features) {
  window.open(url,name,features);
}
//-->
</script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" onLoad="window.defaultStatus='beonline. персональные цифровые услуги';">
<BR>
<BR>
<DIV ID="main" STYLE="border: 0; padding: 0px 5px; margin: 0; width: 461px; background-color: #ffffff;">
  <script language="JavaScript" type="text/javascript">
<!--
    var MESSPREFIX         = 4;
    var WITHTRANSLIT     = 160;
    var WITHOUTTRANSLIT     = 70;
    var REPLYPREFIX         = 14;
    var maxLen = WITHTRANSLIT - MESSPREFIX;
    var send_form         = false;

    function checkLength(obj) {
        var messMaxLength = WITHTRANSLIT - MESSPREFIX;
        if (obj.translit.checked)
            messMaxLength = WITHOUTTRANSLIT - MESSPREFIX;
        if ((obj.send_email.checked) || (obj.phone_answer.checked))
            messMaxLength = messMaxLength - REPLYPREFIX;
        var text=obj.message.value;
        var length=messMaxLength+1;
        var truncated=false;
        while (length>messMaxLength) {
            length=text.length;
            if (!obj.translit.checked) {
                var find=text.match(/[ёжчшюяЁЖЧШЮЯ]/g);
                if (find!=null)
                    length+=find.length;
                find=text.match(/[щЩ]/g);
                if (find!=null)
                    length+=find.length*2;
            }

            if ( length > messMaxLength ) {
                text = text.substr(0, text.length-1);
                truncated = true;
            }
        }

        if (truncated)
            obj.message.value=text;

        obj.mlength.value=messMaxLength-length;
        return length < messMaxLength;
    }

    function onSend() {


        document.forms.sendsms.send.value='send';
        document.forms.sendsms.submit();
        return false;
    }
//-->
</script>
  <FORM METHOD="post" action="http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms" name="sendsms" id="sendsms">
    <input type="text" name="deferto" value="">
    <input type="text" name="adv_year" value="">
    <input type="text" name="send" value="">


<INPUT SIZE="15" STYLE="width: 150px;" TYPE="text" NAME="reply_addr" VALUE="" disabled>
    
    <input style="width: 150px;" size="14" class="btext" readonly type="text" name="phone_answer_number" value="">
    <input type="checkbox" name="translit"
            value="1" 
               onClick="checkLength(document.forms['sendsms']);" class="formimage">
    <input type="checkbox" name="status"
               value="on" class="formimage"  >
    <input type="checkbox" name="send_email"
                        value="1" 
                           onClick="document.forms['sendsms'].reply_addr.disabled = !this.checked;
                            if (!this.checked) {
                                document.forms['sendsms'].reply_addr.value = '';
                            } else {
                                document.forms['sendsms'].phone_answer.checked=false;
                                document.forms['sendsms'].phone_answer_number.value='';
                                document.forms['sendsms'].reply_addr.focus();
                            }; checkLength(document.forms['sendsms']);
                            " class="formimage">
    <input type="checkbox" name="phone_answer" value="1" 
             disabled 
               onClick="if (!this.checked) {
                        document.forms['sendsms'].phone_answer_number.value = '';
                    } else {
                        document.forms['sendsms'].phone_answer_number.value = null;
                        document.forms['sendsms'].send_email.checked=false;
                        document.forms['sendsms'].reply_addr.disabled=true;
                        document.forms['sendsms'].reply_addr.value = '';
                     }; checkLength(document.forms['sendsms']);
                     " class="formimage">
    <TEXTAREA STYLE="width: 240px;" CLASS="stext"
            NAME="message" COLS="20" ROWS="5" WRAP="soft"
        onkeyup="return checkLength(document.forms['sendsms']);" onkeypress="return this.onkeyup();" onChange="this.onkeyup();"                 onFocus="this.onkeyup();" onBlur="this.onkeyup();" onSelect="this.onkeyup();" onMouseOut="this.onkeyup();" onMouseMove="this.onkeyup();"></TEXTAREA>
    
    <TABLE CELLSPACING="1" CELLPADDING="0" BORDER="0">
      <TR>
        <TD CLASS="btext"><INPUT STYLE="width: 40px;" TYPE="text" NAME="mlength" readonly MAXLENGTH="3" SIZE="3" VALUE="156">
        </TD>
        <TD CLASS="stext">&nbsp;символов </TD>
      </TR>
    </TABLE>
    <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
      <TR>
        <TD width="100%" BGCOLOR="#D0C8BA"><IMG SRC="/images/blank.gif" WIDTH="1" HEIGHT="5" ALT=""></TD>
      </TR>
      <TR>
        <TD BGCOLOR="#D0C8BA"><IMG SRC="/images/blank.gif" WIDTH="1" HEIGHT="3" ALT=""></TD>
      </TR>
      <TR>
        <TD><IMG SRC="/images/blank.gif" WIDTH="1" HEIGHT="5" ALT=""></TD>
      </TR>
    </TABLE>
  </FORM>
  <BR>
</DIV>
</BODY>
</HTML>




Люди, помогите плиз убрать все лишнее и оставить только поле textarea и поле с количеством оставшихся символов...
К сожалению слишком сильно написана функция на js, сам разобраться не могу.
Я оставил также зависимые поля, без которых функция не работает.

Помогите плиз! Очень надо.

   
 
 автор: 12345   (27.03.2006 в 15:39)   письмо автору
 
   для: Jura   (27.03.2006 в 13:26)
 

Т.е. надо всего лишь счётчик оставшихся символов, или что-то ещё (читать всё это тоже неохота)?
<textarea rows=20 cols=70 onkeyup=ff(this)></textarea>
<input id=i1 value=300>
<SCRIPT>maxLenTa=300;
ff=function(t){document.getElementById('i1').value=maxLenTa-t.value.length;}
</SCRIPT>

   
 
 автор: Jura   (27.03.2006 в 17:29)   письмо автору
 
   для: 12345   (27.03.2006 в 15:39)
 

Фишка вот в чем, в одном из скриптов, которые приведены в моих ссылках на другие темы, есть один недостаток: когда набрано 300 символов, 301 набирается, а в скрипте БИ... такое предотвращено...
Помогите плиз найти где это... Это очень корректно на самом деле.

   
 
 автор: 12345   (27.03.2006 в 18:12)   письмо автору
 
   для: Jura   (27.03.2006 в 17:29)
 

<textarea id=t1 rows=20 cols=70 onkeyup=ff(this) onkeypress=if(ff1(this,event))return!1;></textarea> 
<input id=i1 value=3> 
<SCRIPT>maxLenTa=3; 
ff=function(t){document.getElementById('i1').value=maxLenTa-t.value.length;}
ff1=function(t,event){  //оставляем возможность ходить по тексту и удалять символы
    return maxLenTa>=t.value.length
    &&event.keyCode!=8&&event.keyCode!=46&&!(event.keyCode>=37&&event.keyCode<=40);    }
</SCRIPT> 
Частичное решение, потому что неплохо бы отрубать и вставки по Paste мыши (событие onpaste в IE). С другой стороны, на сервере всё равно проверку надо дублировать.

   
 
 автор: Jura   (27.03.2006 в 18:43)   письмо автору
 
   для: 12345   (27.03.2006 в 18:12)
 

Кстати, про onpaste, а в других браузерах оно будет работать? или там тоже надо отключать что-то похожее.

Кстати, прилагаю чищенный вариант скрипта, все-таки дочистил до конца.

   
 
 автор: Jura   (27.03.2006 в 18:47)   письмо автору
 
   для: 12345   (27.03.2006 в 18:12)
 

Кстати, про дублирующую проверку на сервере согласен на все 1000%, но вопрос с следующем как отключить вставку именно в этом поле из буфера или мышкой, или с клавиатуры... Подскажите плиз...

Не силен я увы еще в js, но стараюсь потихоньку разбираться.

   
Rambler's Top100
вверх

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