Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ограничение textarea / 12 сообщений из 12, страница 1 из 1
17.07.2007, 20:10
    #34665459
boqtan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Как можно ограничить количество вводимых символов на textarea?
Maxlength не работает textarea
...
Рейтинг: 0 / 0
17.07.2007, 22:37
    #34665613
Хрюнь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Это сделать достаточно сложно. Проще проверить на максимальную длину перед сохранением.
...
Рейтинг: 0 / 0
18.07.2007, 07:20
    #34665788
Hektor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
textarea (with maxlength, without scrolling)
Данные скрипты позволяют установить для html элемента ограничения по количеству введенных символов и отображаемых строк (блокирование скролинга)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--

function keyupsave()
{
window.document.all.Comments.scrollTop= 10 ;
if (window.document.all.Comments.scrollTop >  0 ) {
window.document.all.Comments.value = MsgSave;
}
MsgSave= window.document.all.Comments.value;
}

function count_change()
{
var MaxLen =  255 ; //Максимальная длина сообщения
var Msg = window.document.all.Comments.value;
var Msglen = Msg.length;
if (Msglen => MaxLen ) {
event.returnValue = false;
}
}

function enablePaste() {
event.returnValue = false;
}

function pastecount_change()
{
var MaxLen =  255 ; //Максимальная длина сообщения
var Msg = window.document.all.Comments.value;
var oTR = window.document.selection.createRange();
var sData = window.clipboardData.getData("Text");
oTR.text = sData;
var Msglen=window.document.all.Comments.value.length;
window.document.all.Comments.scrollTop =  10 ;
if (window.document.all.Comments.scrollTop >  0 ) {
event.returnValue = false;
window.document.all.Comments.value=MsgSave;
}
if (Msglen > MaxLen ) {
event.returnValue = false;
window.document.all.Comments.value = Msg.substring( 0 ,MaxLen);
}
}

function scrollcount_change()
{
window.document.all.Comments.value = MsgSave;
}

//-->

</SCRIPT>
</HEAD>
<body>
<form id="Form1" method="post" encType="multipart/form-data" runat="server">

<TEXTAREA id="Comments" name="Comments" onscroll="scrollcount_change();" onkeyup="keyupsave();" onbeforepaste="enablePaste();"
onkeypress="count_change();" onpaste="pastecount_change();" rows="16" cols="25"></TEXTAREA>

</form>
<!--

<SCRIPT language="JavaScript"> //Startup script
var MsgSave= window.document.all.Comments.value;
</SCRIPT>

//-->

</body>
</HTML>

В данном примере максимальное количество вводимых символов ограничено 255, а максимальное количество строк - 16. ID="Comments" взято для примера, и соответственно во всех скриптах должна быть заменена на ID вашего контрола.
Строка скрипта внизу страницы должна быть обязательно включена в стартовый скрипт, если он формируется на сервере, а не задается явно на странице, как в данном примере.


________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
18.07.2007, 08:08
    #34665819
boqtan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Тоисть набраное может привышать количество а отправляется не более 255?
...
Рейтинг: 0 / 0
18.07.2007, 08:38
    #34665839
Хрюхрюшкин.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
boqtanТоисть набраное может привышать количество а отправляется не более 255?
1) Перед отправкой формы можно проверить количество символом и попросить убрать лишние (показав, сколько лишнего введено).
2) Молча отправить только требуемое количество.
3) Предупредить, что количество превышает заданное и дать выбор.
Всё это хорошо работает только если превышение этого количества символов должно сигнализировать об ошибке.

А что тут написал некто Hektor для проверки в рантайме?
Он написал полную чушь (нагромождение безграмотных кусков кода с использованием window.document.all, за который нужно плющить яйца молотком), которая не работает даже под IE (не компилируется; не знаю, откуда он скопировал этот отстой).
Причем в Firefox'е это не будет работать в принципе, потому что там нет обработчика событий onPast.
И использование event.returnValue тоже не проканает.
...
Рейтинг: 0 / 0
18.07.2007, 09:17
    #34665907
Hektor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Согласен. Код получил от товарищей, а те вот от куда.

Исправляюсь.
Проверил. работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<body >
<script language="javascript">
var MaxLength =  160 ;
function DisplayLength(){
  if ( Send_Message.message.value.length > MaxLength ) {
	Send_Message.message.value = Send_Message.message.value.substr(  0 , MaxLength );
  }

  Send_Message.remainchars.value = MaxLength - Send_Message.message.value.length;
}

function CheckLength(){
  event.returnValue = Send_Message.message.value.length < MaxLength || document.selection.type != "None";
}
</script>

<form  name="Send_Message">
	<textarea name="message" rows="5" cols="40" onPropertyChange="DisplayLength();" onKeyPress="DisplayLength();CheckLength();"	onPaste="CheckLength();"></textarea><br>				
	<input type="text" name="remainchars" value="160" size="3" readonly>
	<br>
	символов
</form>
</body>

НАДЕЮСЬ Я РЕАБИЛИТИРОВАН
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
18.07.2007, 11:40
    #34666448
boqtan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Код замечательный!
Гораздо лутче чем хотел:)
Спасибо.
...
Рейтинг: 0 / 0
18.07.2007, 13:51
    #34667046
Хрюхрюшкин.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Hektor
НАДЕЮСЬ Я РЕАБИЛИТИРОВАН
________________________________________________________
________________________________________________________
Нет. Повторяю, всё это не работоспособно нигде кроме IE. Значит использовать данный подход нельзя.
...
Рейтинг: 0 / 0
18.07.2007, 14:33
    #34667279
boqtan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Я знаю. к томуэе в браузерах бывает выключают javascript. :)
...
Рейтинг: 0 / 0
08.08.2007, 17:16
    #34714729
boqtan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
а еще можно fputs задать ограничение на запись:) к примеру fputs($file,"$ljhkjhkjh","160");
:)
...
Рейтинг: 0 / 0
08.08.2007, 17:31
    #34714807
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
Хрюхрюшкин. Hektor
НАДЕЮСЬ Я РЕАБИЛИТИРОВАН
________________________________________________________
________________________________________________________
Нет. Повторяю, всё это не работоспособно нигде кроме IE. Значит использовать данный подход нельзя.А если заменить строки типа Send_Message.remainchars.value на document.forms("Send_Message")("remainchars").value? Не могу проверить, у меня только ie.
...
Рейтинг: 0 / 0
09.08.2007, 16:50
    #34717754
Анонимус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение textarea
<html>
<head>
<script language="JavaScript">
<!--
var count=1000;
function load1()
{
document.formText.t1.value=count
document.formText.t2.value=count
}
function text1Change()
{
a=document.formText.text1.value.length;
if((a)>count)document.formText.text1.value=document.formText.text1.value.substring(0,count);
a=document.formText.text1.value.length;
document.formText.t2.value=count-a;
}
//-->
</script>
</head>
<body onload=load1()>
<form name="formText">
<textarea name="text1" rows=5 cols=30 onkeyup="text1Change()"></textarea><br>
Ограничение символов:
<input type="text" name="t1" size="4" maxlength="4" disabled="false"><br>
Осталось:
<input type="text" name="t2" size="4" maxlength="4" disabled="false">
</form>
</body>
</html>
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ограничение textarea / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]