tags:

views:

9

answers:

1

Hello I have a following formvalidatior function in my document.

function formValidator(formid) {

  var form = cic.$(formid);

  if(!form) return ('');

  var errors = [];
    var len = form.elements.length;

  for(var elementIdx = 0; elementIdx < len; elementIdx++) {

    var element = form.elements[elementIdx];

    if(!element && !element.getAttribute('validationtype')) return ('');

    switch (element.getAttribute('validationtype')) {

      case 'text'    :  if(cic.getValue(element).strip() == "") errors.push(element.getAttribute('validationmsg'));
                        break;

      case 'email'   :  if(!cic.isEmail(cic.getValue(element))) errors.push(element.getAttribute('validationmsg'));
                        break;

      case 'numeric' :  if(isNaN(cic.getValue(element).replace(',', '.'))) errors.push(element.getAttribute('validationmsg'));
                        break;         

      case 'confirm' :  if(cic.getValue(cic.$(element.getAttribute('sourcefield'))) !== cic.getValue(element)) errors.push(element.getAttribute('validationmsg'));
                        break;         
    }

  }

  return (errors.length > 0) ? '<li>' + errors.uniq().join("<li>") : '';
}

It works fine, now I have an Iframe in my document, and that I frame contains the form to validate. What will be the best practice to change this function in such a way that it can validate document forms and iframe from simeltaniously.

Thanks

+1  A: 

Instead of passing the ID of the form, pass it the form element (i.e. do the lookup outside the function).

Then write two functions: One which iterates of the forms of a document (pass the document as a parameter) and calls formValidator(). Use the document.forms array to locate the forms.

Plus a second one which iterates over all iframes and calls the first function. Use the document.iframes array and then frame.document to get the document of the iframe.

Aaron Digulla
Thanks for quick response.