|
|
|
| Добрый день. Прошу прощения за неоригинальность, но есть следующая проблема.
Прочитал пару темок, но нашел некоторые неточности. К сожалению с 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"> символов </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, сам разобраться не могу.
Я оставил также зависимые поля, без которых функция не работает.
Помогите плиз! Очень надо. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: 12345
(27.03.2006 в 15:39)
| | Фишка вот в чем, в одном из скриптов, которые приведены в моих ссылках на другие темы, есть один недостаток: когда набрано 300 символов, 301 набирается, а в скрипте БИ... такое предотвращено...
Помогите плиз найти где это... Это очень корректно на самом деле. | |
|
|
|
|
|
|
|
для: 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). С другой стороны, на сервере всё равно проверку надо дублировать. | |
|
|
|
|
|
|
|
для: 12345
(27.03.2006 в 18:12)
| | Кстати, про onpaste, а в других браузерах оно будет работать? или там тоже надо отключать что-то похожее.
Кстати, прилагаю чищенный вариант скрипта, все-таки дочистил до конца. | |
|
|
|
|
|
|
|
для: 12345
(27.03.2006 в 18:12)
| | Кстати, про дублирующую проверку на сервере согласен на все 1000%, но вопрос с следующем как отключить вставку именно в этом поле из буфера или мышкой, или с клавиатуры... Подскажите плиз...
Не силен я увы еще в js, но стараюсь потихоньку разбираться. | |
|
|
|