Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2012, 00:37
Кандидат Javascript-наук
Отправить личное сообщение для iNfantry Посмотреть профиль Найти все сообщения от iNfantry
 
Регистрация: 29.10.2011
Сообщений: 132

Ограничить количество символов в textarea
Здача очень банальная, просто сам пока не сталкивался - как проще всего ограничить количество символов которые можно ввести в textarea? Я конешно могу с помощью хитрых махинаций жс сделать это сам, но не хочется изобретать велосипед. Стандартного атрибута который задает максимальное количество символов у этого тэга нет, как я понял?
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2012, 05:56
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

Сообщение от iNfantry Посмотреть сообщение
Я конешно могу с помощью хитрых махинаций жс сделать это сам, но не хочется изобретать велосипед.
Стандартного атрибута который задает максимальное количество символов у этого тэга нет, как я понял?

http://htmlbook.ru/html/textarea/maxlength
<textarea></textarea>

<script>

textarea=document.getElementsByTagName('textarea')[0]

function handler(){
	if(textarea.value.length>5){
	textarea.disabled = true;
	}else{
	textarea.disabled = false;
	}
	
}

if(textarea.addEventListener){
	textarea.addEventListener('keyup',handler,false)
	
}
else{
	textarea.attachEvent('onkeyup',handler)
	
	}
</script>

Нельзя убрать симолы и атрибут readonly не помогает.
Может сдесь поможет return false,но я не знаю как его влепить
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2012, 10:35
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<!DOCTYPE html>
<html>
	<head>
	    <title></title>
	</head>
	<body>
		<div>Вводить можно только цифры, максимум 10 цифр</div>
		<input data-max-length="10" data-allow-input="/[0-9]/i"><br />
		<div>Вводить можно что угодно максимум 100 символов</div>
		<textarea data-max-length="100" style="width: 400px;"></textarea><br />
		<div>Вводить можно сколько угодно, только латиницу</div>
		<textarea data-allow-input="/[a-z\s\x0D]/i" style="width: 400px;"></textarea>

		<script type="text/javascript">

			(function() {

				var tags = [ "textarea", "input" ],
					i, k, tag, elem, elems,
					eventType = document.addEventListener ? [ "", "addEventListener" ] : [ "on", "attachEvent" ];

				for( i = 0; tag = tags[ i++ ]; ) {

					elems = document.getElementsByTagName( tag );

					for( k = 0; elem = elems[ k++ ]; ) {

						if ( elem.getAttribute( "data-allow-input" ) || elem.getAttribute( "data-max-length" ) ) {

							elem.setAttribute( "data-store-value", elem.value );

							elem[ eventType[ 1 ] ]( eventType[ 0 ] ? "onpaste" : "input", function( e ) {

								e = e || window.event;

								var self = e.target || e.srcElement;

								if ( e.type === "input" && !self.keyPressed ) {
									self.value = self.getAttribute( "data-store-value" );
								}

								self.keyPressed = false;

								return false;

							}, false );

							elem[ eventType[ 1 ] ]( eventType[ 0 ] + "keyup", function( e ) {
								e = e || window.event;

								var self = e.target || e.srcElement;

								self.setAttribute( "data-store-value", self.value );
							}, false );

							elem[ eventType[ 1 ] ]( eventType[ 0 ] + "keypress", function( e ) {

								e = e || window.event;

								if ( e.which == null ) {
									e.which = e.charCode != null ? e.charCode : e.keyCode;
								}

								var m, self = e.target || e.srcElement,
									allow = self.getAttribute( "data-allow-input" ),
									maxLength = self.getAttribute( "data-max-length" );

								if ( allow && ( m = /^\/(.*)\/(?:([igm]+))?$/.exec( allow ) ) ) {
									allow = new RegExp( m[ 1 ], m[ 2 ] );
								} else if ( allow ) {
									allow = new RegExp( "(" + allow + ")", "g" );
								}

								if ( !( e.which == 9 || e.which == 8 || e.which == 0 &&
									/[\x21\x22\x23\x24\x25\x26\x27\x28\x2E]/.test( String.fromCharCode( e.keyCode ) ) ) &&
									( ( allow && !allow.test( String.fromCharCode( e.which ) ) ) ||
										( maxLength && self.value.length + 1 > maxLength ) ) ) {
									if ( e.preventDefault ) {
										e.preventDefault();
									} else {
										e.returnValue = false;
									}
									return false;
								}

								self.keyPressed = true;

							}, false );
						}
					}
				}

			})();

		</script>
	</body>
</html>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество символов ivanweb jQuery 14 13.09.2012 15:26
если количество символов в инпут техте не достаточно, то "сказат" ето ползователу dadli Элементы интерфейса 6 17.10.2011 00:55
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 10:56
Resize textarea, в копилку. Robox jQuery 0 17.01.2011 17:05
textarea validation Петр Общие вопросы Javascript 3 08.12.2009 17:59