Redaxscript 0.4.0 form validation

Benchmark created by None on


Preparation HTML

<form method="post" class="js_check_required" id="comments_form"><fieldset><legend>Erforderliche Felder sind mit einem Sternchen markiert.</legend><ul><li><label for="author">* Autor:</label></li><li><input type="text" required="required" maxlength="50" name="author" class="js_required field_text field_required" id="author"></li><li><label for="email">* E-mail:</label></li><li><input type="email" required="required" maxlength="50" name="email" class="js_required field_text field_required" id="email"></li><li><label for="url">URL:</label></li><li><input type="url" maxlength="50" name="url" class="field_text" id="url"></li><li><label for="text">* Kommentar:</label></li><li><textarea required="required" cols="100" rows="1" name="text" class="js_required js_editor js_auto_resize field_textarea field_required" id="text" style="overflow: hidden;"></textarea></li></ul></fieldset><input type="hidden" name="language"><input type="hidden" value="2011-04-26 00:17:16" name="date"><input type="hidden" value="4" name="article"><input type="hidden" name="access"><input type="hidden" value="9fc5b5087c19d6c3a153ecc55275d1df" name="token"><button value="Erstellen" name="comment" class="js_submit field_button" type="submit"><span><span>Erstellen</span></span></button></form><script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
New
(function($) { /* check required */
 $.fn.checkRequired = function(required) {
  var form = $(this),
      fieldSubmit = form.find('button.js_submit'),
      fieldRequired, fieldRequiredTag, fieldRequiredValue;

  /* validate required fields on submit */

  form.submit(function() {
   form.find(required).each(function() {
    fieldRequired = $(this), fieldRequiredTag = fieldRequired.context.tagName;

    /* check for tag */

    if (fieldRequiredTag == 'DIV') {
     fieldRequiredValue = fieldRequired.text();
    }
    else {
     fieldRequiredValue = fieldRequired.val();
    }

    /* check for value */

    if ($.trim(fieldRequiredValue) == '') {
     fieldRequired.addClass('note_error');
    }
   });

   /* disable submit button */

   if (form.find('.note_error').length) {
    fieldSubmit.addClass('field_disabled').attr('disabled', 'disabled');
    return false;
   }
  });

  /* validate required fields on input and keyup */

  form.find(required).live('input keyup', function() {
   fieldRequired = $(this), fieldRequiredTag = fieldRequired.context.tagName;

   /* check for tag */

   if (fieldRequiredTag == 'DIV') {
    fieldRequiredValue = fieldRequired.text();
   }
   else {
    fieldRequiredValue = fieldRequired.val();
   }

   /* check for value */

   if ($.trim(fieldRequiredValue)) {
    fieldRequired.removeClass('note_error');
    if (fieldRequiredTag == 'DIV' || fieldRequiredTag == 'TEXTAREA') {
     $('div.note_error, textarea.note_error').removeClass('note_error');
    }
   }

   /* enable submit button */

   if (form.find('.note_error').length == 0) {
    fieldSubmit.removeClass('field_disabled').removeAttr('disabled');
   }
  });
 };
})(jQuery);

$(function() { /* startup */
 $('form.js_check_required').checkRequired('div.js_required, input.js_required, textarea.js_required');
});
ready
Old
(function($) { /* validate required fields on click */
 $.fn.checkRequired = function() {
  $(this).click(function() {
   var fieldCheckRequired = $(this),
       form = fieldCheckRequired.closest('form'),
       fieldRequired, fieldRequiredTag, fieldRequiredValue;

   form.find('div.js_required, input.js_required, textarea.js_required').each(function() {
    fieldRequired = $(this);
    fieldRequiredTag = fieldRequired.context.tagName;

    /* check for tag */

    if (fieldRequiredTag == 'DIV') {
     fieldRequiredValue = fieldRequired.text();
    }
    else {
     fieldRequiredValue = fieldRequired.val();
    }

    /* check for value */

    if ($.trim(fieldRequiredValue) == '') {
     fieldRequired.addClass('note_error');
    }
   });

   /* disable submit button */

   if (form.find('.note_error').length) {
    fieldCheckRequired.addClass('field_disabled').attr('disabled', 'disabled');
    return false;
   }
  });
 };

 /* validate required fields on input and keyup */

 $.fn.required = function() {
  $(this).live('input keyup', function() {
   var fieldRequired = $(this),
       form = fieldRequired.closest('form'),
       fieldRequiredTag = fieldRequired.context.tagName,
       fieldRequiredValue;

   /* check for tag */

   if (fieldRequiredTag == 'DIV') {
    fieldRequiredValue = fieldRequired.text();
   }
   else {
    fieldRequiredValue = fieldRequired.val();
   }

   /* check for value */

   if ($.trim(fieldRequiredValue)) {
    fieldRequired.removeClass('note_error');
    if (fieldRequiredTag == 'DIV' || fieldRequiredTag == 'TEXTAREA') {
     $('div.note_error, textarea.note_error').removeClass('note_error');
    }
   }
   if (form.find('.note_error').length == 0) {
    form.find('button.js_check_required, input.js_check_required').removeClass('field_disabled').removeAttr('disabled');
   }
  });
 };
})(jQuery);

$(function() { /* startup */
 $('form button.js_check_required, form input.js_check_required').checkRequired();
 $('form div.js_required.note_error, form input.js_required.note_error, form textarea.js_required.note_error').required();
});
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.