Удалить класс, не работающий с MooTools - PullRequest
2 голосов
/ 22 августа 2011

Я использую следующий фрагмент кода на своей веб-странице, чтобы изменить класс выбранных элементов в зависимости от выбора переключателя.

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

<script type="text/javascript">
  window.addEvent('domready', function(){
   $('votconj').addEvent('click', function() {
     // This works fine
     $('first_name_conjoint').addClass("validate['required','nodigit']");
     $('last_name_conjoint').addClass("validate['required','nodigit']");
     $('jj_conjoint').addClass("validate['required']");
     $('mm_conjoint').addClass("validate['required']");
     $('aaaa_conjoint').addClass("validate['required']");
     $('conjoint_regime').addClass("validate['required']");
     new FormCheck('formulaire');
   });

   $('votconj_no').addEvent('click', function() {
     // This doesn't work !
     $('first_name_conjoint').removeClass("validate['required','nodigit']");
     $('last_name_conjoint').removeClass("validate['required','nodigit']");
     $('jj_conjoint').removeClass("validate['required']");
     $('mm_conjoint').removeClass("validate['required']");
     $('aaaa_conjoint').removeClass("validate['required']");
     $('conjoint_regime').removeClass("validate['required']");
     new FormCheck('formulaire');
   });


   new FormCheck('formulaire');
});
</script>


// The radio button
<label>Conjoint :</label>
    <input type="radio" name="votconj" id="votconj" value="oui">oui
    <input type="radio" name="votconj" id="votconj_no" value="non" checked="checked">non

1 Ответ

5 голосов
/ 22 августа 2011

Это не работает, потому что метод ".removeClass ()" MooTools просто запихивает имя класса в середину регулярного выражения, не удосужившись экранировать встроенные метасимволы регулярного выражения.

Однако вы можете обойти эту проблему, сделав соответствующее цитирование самостоятельно. В этом примере это будет выглядеть так:

 $('first_name_conjoint').removeClass("validate\\['required','nodigit'\\]");

Здесь - это jsfiddle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...