Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2011, 14:51
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Как правильно очистить maxlength в input?
Как известно, если в HTML-коде у поля input не проставлен атрибут/свойство maxlength=..., то данный input не накладывает ограничений на длину вводимого текста. Но если в поле уже было проставлено какое-то ограничение, то как его снять? т.е. отменить? Я почему-то думал, что надо (как во многих системах) присвоить ему 0, или пустую строку. И вот что получилось в результате:

при присвоении нуля свойству инпут.maxLength в броузерах происходит следующее:

1.IE - длина становится = 0 и инпут не позволяет вводить ни один символ (можно использовать для имитации режима read-only)

2.FireFox - ведет себя также как IE

3.Google Chrome - длина становится = 524288 !

4.Opera - ведет себя прикольно: показывает, что значение maxLength = 0, но на самом деле оно остается тем, что было присвоено ранее (например, 10)

Так как же очистить правильно?
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2011, 15:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Маэстро
Так как же очистить правильно?
А если "пусто" или undefine?
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2011, 15:22
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

А если поробывать вот-так
input.removeAttribute("max-length");

или вот так
input.maxLength = -1;
Ответить с цитированием
  #4 (permalink)  
Старый 22.06.2011, 15:52
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

ребята... ну конечно же я всё это проверил... просто не стал сюда писать/захламлять "статистическими исследованиями"
input.maxLength = '';
input.maxLength = undefined;
input.removeAttribute("max-length");
input.maxLength = -1;
// и даже пробовал это:
delete(input.maxLength);

Это всё ведет себя по-разному в разных броузерах, но не выполняет задуманного - не снимает ограничение длины ввода.
А вы это проверяли?
Ответить с цитированием
  #5 (permalink)  
Старый 22.06.2011, 16:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Маэстро
А вы это проверяли?
Так это не наш сон...
Ответить с цитированием
  #6 (permalink)  
Старый 22.06.2011, 16:23
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

var removeMaxLength = function ((){
	var maxLength = document.createElement("input").maxLength;
	return function( input ) {
		try {
			input.maxLength = maxLength;
		} catch ( e ) {
			input.setAttribute("maxlength", maxLength);
		} 
	};
})();

Работает во всех IE, chrome последний, FF4 и какая-то Opera
Ответить с цитированием
  #7 (permalink)  
Старый 22.06.2011, 17:17
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

1. Почему-то у меня javascript ругался на вот это: function ((){

2. Откровенно говоря, не очень понял, как работает Ваш скрипт, особенно меня беспокоит постоянное создание элемента document.createElement("input") - не будет никакого накопления памяти?

3. Я перестал тратить время на эти исследования и сделал одной строчкой: input.maxLength = 8000; - все-равно ни одно поле в таблице не примет больше (ограничение базы).

4. Спасибо, что потратили на меня время.
Ответить с цитированием
  #8 (permalink)  
Старый 22.06.2011, 17:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Маэстро Посмотреть сообщение
1. Почему-то у меня javascript ругался на вот это: function ((){.
почему-то ?

"интересно девки пляшут"

Цитата:
function ((){ -----> (function (){
Сообщение от Маэстро Посмотреть сообщение
2. Откровенно говоря, не очень понял, как работает Ваш скрипт, особенно меня беспокоит постоянное создание элемента document.createElement("input") - не будет никакого накопления памяти?
он и рад бы всю память на 9000 гигабайт заполнить, да сборщик мусора мешает

т.е. нет, не будет, короче говоря

Последний раз редактировалось melky, 22.06.2011 в 17:41.
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2011, 17:50
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

melky, спасибо большое. Просто не там скобку поставил.
Ответить с цитированием
  #10 (permalink)  
Старый 22.06.2011, 17:59
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно скопировать выпадающий список <select ... diiimonn Элементы интерфейса 1 13.06.2011 09:23
input как урать подсказку grusha jQuery 4 11.06.2009 23:23
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55