2009-08-25 3 views
1

Кто-нибудь знает способ обнаружения, когда класс данного элемента изменился с помощью JQuery?Изменение определения jquery при назначении класса

Я использую «просто счетный» JQuery-плагин, чтобы уведомить пользователя о количестве символов, введенных в текстовую область. Когда пользователь превышает допустимое количество символов, я хотел бы отключить кнопку «post».

Поскольку просто счетные изменения присваиваемого класса CSS при достижении предела, моя идея состояла в том, чтобы зафиксировать это событие, чтобы я мог отключить кнопку сообщения, но, возможно, есть лучший способ?

Любые предложения приветствуются.

Спасибо.

+0

Что вы подразумеваете под изменением? Не могли бы вы привести пример? –

+0

Я предполагаю, что он что-то имел «.foo» и теперь имеет «.bar» или имел «.foo» и теперь имеет «.foo .bar». – Sampson

+0

Я добавил несколько дополнительных объяснений. Благодарю. – goombaloon

ответ

1

Вы имеете в виду что-то вроде этого?

<script> 
    $("#myTextArea").change(function(){ 
     var contentLength = $(this).val().length; 
     var charLimit = 500; 
     if(contentLength > charLimit){ 
      $("#saveButton").attr("disabled","disabled"); 
     } 

    }); 

</script> 


<textarea id="myTextArea"></textArea> 
<input type="submit" id="saveButton"> 
+0

Я в основном пошел с этим (кроме случаев, когда я использовал «keyup», а не «change»). Первоначально я хотел избежать установки максимального количества символов как в счетчике символов, так и при отключении кода кнопки выше, но все варианты казались слишком хакированными. Благодарю. – goombaloon

0

Я не знаю ничего, что в настоящее время существует, но вы можете написать плагин для jQuery, который запускает настраиваемое событие всякий раз, когда имя класса изменяется (через jQuery).

0

У вас может быть событие на клавиатуре или вверх (для текстовой области), которое проверяет, достигло ли максимальное количество символов, и сработает соответствующая логика.

$(textarea).keypress(function (e) { 
     if(getLetterCount() > 300){ 
      $(postButton).css('disabled', 'true'); 
     else 
      $(postButton).css('disabled', 'false'); 
     } 
}); 
1

Предполагая, что вы должны блокировать контроль, чтобы не перехватить изменение класса, вы можете просто переписать часть плагин, отвечающий за действия (класс дополнение).

0

Нет такого события. Что вам нужно сделать, это настроить плагин в соответствии с вашими потребностями.

Перейти посмотреть the code. В любом месте, которое он называет addClass(options.overClass), вам необходимо отключить вашу кнопку. В любом месте, где он звонит addClass(options.safeClass), вам нужно включить свою кнопку. Просто.