Проблема атрибута jQuery maxlength с текстовыми областями

С версией jQuery 1.2.3 я пытаюсь добавить узлы после элементов textarea с атрибутом «maxlength», но это не работает:

$("textarea[@maxlength]").after("<b>Aint working</b>");

Это HTML-код:

<textarea maxlength="500">This is a test.</textarea>
<textarea maxlength="250">Yet another line.</textarea>
<textarea maxlength="125">Bar or foo, whatever.</textarea>

Странно, если я изменю атрибут maxlength, например. rel работает просто отлично!

Посмотрите на этот пример из реальной жизни: http://www.host2000.be/_temp/jquery_tests_counter.html

PS: я знаю о нотации [@attribute], которая больше не поддерживается в jQuery 1.3, но это не имеет никакого отношения к проблеме.


person bart    schedule 25.03.2009    source источник


Ответы (2)


С вашей версией jQuery это работает только с небольшой хитростью. Неявное значение textarea имеет разные значения для разных браузеров. Firefox, например, имеет неявное значение -1.

Итак, чтобы ваш скрипт работал в Firefox, вам нужно сделать следующее:

$("textarea[@maxlength!=-1]").after("<b>Aint working</b>");

Здесь вы можете найти дополнительную информацию о неявные значения атрибута maxlength.

Наслаждаться!

person Bogdan Constantinescu    schedule 25.03.2009
comment
Судя по этой статье, это было исправлено в jQuery 1.6. - person Aaron D; 20.09.2011

Выстрел в темноте: это может быть потому, что maxlength не является действительным атрибутом для текстовых областей.

РЕДАКТИРОВАТЬ: я только что попробовал ваш пример с jQuery 1.3 и удалил @, и он работал безупречно.

РЕДАКТИРОВАТЬ № 2: Использование jQuery 1.2.6 также работает без @... Вы пытались их удалить?

person Seb    schedule 25.03.2009
comment
Это не работает без @ в 1.2.6, но это, вероятно, по причине, описанной ниже. - person bart; 25.03.2009
comment
Кстати, я пробовал в Опере... может быть, поэтому у меня это сработало :P - person Seb; 25.03.2009