2013-09-30 172 views
0

我需要將關於jQuery Validator顯示的錯誤的工具提示進行分組。所以我用setInterval寫了一個簡單的循環來檢查同一行是否有多個錯誤類的輸入。Opera中的SetInterval導致閃爍選擇

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中,它導致在打開的Select元素上閃爍。

+0

您看到的「眨眼睛」來自'.xrror'元素被刪除並在很短的時間內添加。有些瀏覽器完全不提供,但Opera的情況並非如此。 – Brian

回答

2

而不是每隔50毫秒使用一次setInterval函數,這將消耗大量資源,您應該將函數綁定到諸如提交或更改等事件上。由於它似乎與表單驗證有關,除非用戶修改字段,否則不需要執行任何操作。

+0

爲什麼我沒有想過......謝謝! – marverix