diff -urp maxlength/maxlength.js maxlength_patched/maxlength.js
--- maxlength/maxlength.js	2008-09-29 00:14:48.000000000 +0000
+++ maxlength_patched/maxlength.js	2010-11-10 12:23:41.000000000 +0000
@@ -1,10 +1,23 @@
 /* $Id: maxlength.js,v 1.1.6.6 2008/09/29 00:14:48 acm Exp $ */
+function strip_tags (input, allowed) {
+    // Strips HTML and PHP tags from a string  
+
+   allowed = (((allowed || "") + "")
+	  .toLowerCase()
+	  .match(/<[a-z][a-z0-9]*>/g) || [])
+	  .join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
+   var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
+	   commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
+   return input.replace(commentsAndPhpTags, '').replace(tags, function($0, $1){
+	  return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
+   });
+}
 
 Drupal.maxLength_limit = function (field) {
   var limit = field.attr("limit");
 
   // calculate the remaining count of chars
-  var remainingCnt = limit - field.val().length;
+  var remainingCnt = limit - strip_tags(field.val()).length;
 
   // if there is not remaining char, we clear additional content
   if (remainingCnt < 0) {
diff -urp maxlength/maxlength.module maxlength_patched/maxlength.module
--- maxlength/maxlength.module	2009-06-06 17:53:32.000000000 +0000
+++ maxlength_patched/maxlength.module	2010-11-10 12:27:19.000000000 +0000
@@ -245,7 +245,7 @@ function maxlength_nodeapi(&$node, $op, 
       switch ($op) {
         case 'validate':
           $form = $a3;
-          if (drupal_strlen($node->$field) > $limit) {
+          if (drupal_strlen(strip_tags($node->$field)) > $limit) {
             form_set_error($field, t('The !field field has exceeded its maximum number of characters (!limit).', array('!limit' => $limit, '!field' => $field)));
           }
           break;
