diff --git a/advagg_validator/advagg_validator.admin.inc b/advagg_validator/advagg_validator.admin.inc
index 5b5a46d..ec014a1 100644
--- a/advagg_validator/advagg_validator.admin.inc
+++ b/advagg_validator/advagg_validator.admin.inc
@@ -46,6 +46,15 @@ function advagg_validator_admin_css_lint_form() {
     'type' => 'file',
   );
 
+  $settings = array(
+    'ignore' => variable_get('csslint_ignore'),  // comma-separated code(s) - https://github.com/CSSLint/csslint/wiki/Command-line-interface#--ignore
+  );
+
+  $form['#attached']['js'][] = array(
+    'data' => array('csslint' => $settings),
+    'type' => 'setting',
+  );
+
   return $form;
 }
 
@@ -95,6 +104,9 @@ function advagg_validator_admin_js_hint_form() {
       'CKEDITOR' => FALSE,
     ),
   );
+
+  $settings['ignore'] = variable_get('jshint_ignore');  // comma-separated code(s) - https://jslinterrors.com/
+
   $form['#attached']['js'][] = array(
     'data' => array('jshint' => $settings),
     'type' => 'setting',
diff --git a/advagg_validator/advagg_validator.js b/advagg_validator/advagg_validator.js
index 163ebd7..817dde7 100644
--- a/advagg_validator/advagg_validator.js
+++ b/advagg_validator/advagg_validator.js
@@ -32,14 +32,14 @@
                 dataType: 'text',
                 async: false
               });
-              if (JSHINT(x.responseText, Drupal.settings.jshint, Drupal.settings.jshint.predef)) {
-                $(results).append('<h4>' + filename + ' Passed!</h4>');
-              }
-              else {
-                $(results).append('<p><h4>' + filename + ' Failed!</h4>');
-                $(results).append('<ul>');
+              if (!JSHINT(x.responseText, Drupal.settings.jshint, Drupal.settings.jshint.predef)) {
+                $(results).append('<p><h4>' + filename + '</h4><ul>');
                 for (var i = 0; i < JSHINT.errors.length; i++) {
-                  $(results).append('<li><b>' + JSHINT.errors[i].line + ':</b> ' + JSHINT.errors[i].reason + '</li>');
+                  var ignore = (Drupal.settings.jshint && Drupal.settings.jshint.ignore) ? Drupal.settings.jshint.ignore.split(',') : new Array();
+		  if (ignore.indexOf(JSHINT.errors[i].code) === -1) {
+		    var w = JSHINT.errors[i].reason + ' (line ' + JSHINT.errors[i].line + ', col ' + JSHINT.errors[i].character + ', rule ' + JSHINT.errors[i].code + ')';
+		    $(results).append('<li class="' + JSHINT.errors[i].id.replace(/[()]/g, '') + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		  }
                 }
                 $(results).append('</ul></p>');
               }
@@ -79,13 +79,14 @@
                 dataType: 'text',
                 async: false
               });
-              if (JSHINT(x.responseText, Drupal.settings.jshint, Drupal.settings.jshint.predef)) {
-                $(results).append('<h4>' + filename + ' Passed!</h4>');
-              } else {
-                $(results).append('<p><h4>' + filename + ' Failed!</h4>');
-                $(results).append('<ul>');
+              if (!JSHINT(x.responseText, Drupal.settings.jshint, Drupal.settings.jshint.predef)) {
+                $(results).append('<p><h4>' + filename + '</h4><ul>');
                 for (var i = 0; i < JSHINT.errors.length; i++) {
-                  $(results).append('<li><b>' + JSHINT.errors[i].line + ':</b> ' + JSHINT.errors[i].reason + '</li>');
+		  var ignore = (Drupal.settings.jshint && Drupal.settings.jshint.ignore) ? Drupal.settings.jshint.ignore.split(',') : new Array();
+		  if (ignore.indexOf(JSHINT.errors[i].code) === -1) {
+		    var w = JSHINT.errors[i].reason + ' (line ' + JSHINT.errors[i].line + ', col ' + JSHINT.errors[i].character + ', rule ' + JSHINT.errors[i].code + ')';
+		    $(results).append('<li class="' + JSHINT.errors[i].id.replace(/[()]/g, '') + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		  }
                 }
                 $(results).append('</ul></p>');
               }
@@ -128,11 +129,13 @@
 
               var y = CSSLint.verify(x.responseText);
               var z = y.messages;
-              $(results).append('<p><h4>' + filename + '</h4>');
-              $(results).append('<ul>');
+              $(results).append('<p><h4>' + filename + '</h4><ul>');
               for (var i = 0, len = z.length; i < len; i++) {
-                var w = z[i].message + ' (line ' + z[i].line + ', col ' + z[i].col + ')';
-                $(results).append('<li class="' + z[i].type + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		var ignore = (Drupal.settings.csslint && Drupal.settings.csslint.ignore) ? Drupal.settings.csslint.ignore.split(',') : new Array();
+		if (ignore.indexOf(z[i].rule.id) === -1) {
+                  var w = z[i].message + ' (line ' + z[i].line + ', col ' + z[i].col + ', rule ' + z[i].rule.id + ')';
+                  $(results).append('<li class="' + z[i].type + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		}
               }
               $(results).append('</ul></p>');
             }
@@ -174,11 +177,13 @@
 
               var y = CSSLint.verify(x.responseText);
               var z = y.messages;
-              $(results).append('<p><h4>' + filename + '</h4>');
-              $(results).append('<ul>');
+              $(results).append('<p><h4>' + filename + '</h4><ul>');
               for (var i = 0, len = z.length; i < len; i++) {
-                var w = z[i].message + ' (line ' + z[i].line + ', col ' + z[i].col + ')';
-                $(results).append('<li class="' + z[i].type + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		var ignore = (Drupal.settings.csslint && Drupal.settings.csslint.ignore) ? Drupal.settings.csslint.ignore.split(',') : new Array();
+		if (ignore.indexOf(z[i].rule.id) === -1) {
+                  var w = z[i].message + ' (line ' + z[i].line + ', col ' + z[i].col + ', rule ' + z[i].rule.id + ')';
+                  $(results).append('<li class="' + z[i].type + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
+		}
               }
               $(results).append('</ul></p>');
             }
