2013-09-30 2 views
0

Мне нужно сгруппировать всплывающие подсказки об ошибках, отображаемых jQuery Validator. Поэтому я написал простой цикл с setInterval, чтобы проверить, есть ли в одной строке более одного ввода с классом ошибок.SetInterval в Opera вызывает мерцание

setInterval(function() { 
     $('.xrror').remove(); 
     $('div.row-4:has([name].error)').each(function() { 
     var tmp = $('[name].error', this); 
     if(tmp.length > 1) { 
      $('label.error', this).hide(); 

      tmp.last().parent().append(
       $(document.createElement('label')).addClass('error').addClass('xrror').append(
        $(document.createElement('span')).text('Fields with errors were marked with red color') 
       ) 
      ); 
     } else { 
      $('[name].error', this).parent().find('label.error').show(); 
     } 
     }); 
    }, 50); 

И в Opera это вызывает мигание при открытии. Выберите элемент.

+0

«Мигание», которое вы видите, из элементов '.xrror', удаляемых и добавленных за очень короткое время. Некоторые браузеры пропускают рендеринг всего этого, но это не относится к Opera. – Brian

ответ

2

Вместо использования функции setInterval каждые 50 миллисекунд, которая будет потреблять много ресурсов, вы должны привязать свою функцию к событиям, таким как отправка или изменение. Поскольку это похоже на проверку формы, вам не нужно ничего делать, если пользователь не изменит поле.

+0

Почему я об этом не думал ... спасибо! – marverix

Смежные вопросы