[jQuery validate] Issue with wrong widgets being validated

[jQuery validate] Issue with wrong widgets being validated

Hi,

I have the following structure using jQuery validate from bassistance.de:

html:
  1. <form>
  2. <input

    type="text"
    name="object[attr][fname][value]"
    id="object[attr][fname][value]"
    size="25"

    class="fx-widget fx-validate"
    data-validation='[{"MESSAGE":"Required Field","TYPE":"required"},{"MESSAGE":"Minimaal 2 karakters vereist","TYPE":"minlength","LENGTH":"2"}]'
    />
    <select
    name="object[attr][language][value]"
    id="[comboboxwidget_language][value]"
    size="1"
    class="fx-widget"
    data-validation='[]'
    > <option

    name="[comboboxwidget_language][CBO_SELECTOR]"
    id="[comboboxwidget_language][CBO_SELECTOR]"
    value=""
    >
    Please select...
    </option>
    <option
    name="[comboboxwidget_language][nl]"
    id="[comboboxwidget_language][nl]"
    value="nl"
    >
    Dutch
    </option>
    <option
    name="[comboboxwidget_language][en]"
    id="[comboboxwidget_language][en]"
    selected="selected"
    value="en"
    >
    English
    </option>
    <option
    name="[comboboxwidget_language][fr]"
    id="[comboboxwidget_language][fr]"
    value="fr"
    >
    French
    </option>
    <option
    name="[comboboxwidget_language][de]"
    id="[comboboxwidget_language][de]"
    value="de"
    >
    German
    </option>
    </select>

     



My javascript initialises all widgets which require validations as follows:

  1. // let's add form validation...
  2.     $('form').livequery(function() {
  3.         $(this).validate();
  4.         $(this).find('.fx-widget').each(function() {
  5.             validators = $.parseJSON($(this).attr("data-validation"));
  6.             for(i = 0; i < validators.length; i++) {
  7.                switch(validators[i]["TYPE"]) {
  8.                     case 'required':
  9.                         $(this).rules("add", {
  10.                          required: true,
  11.                          messages: {
  12.                            required: validators[i]["MESSAGE"]
  13.                          }
  14.                         });
  15.                         break;
  16.                     case 'minlength':
  17.                         $(this).rules("add", {
  18.                          minlength: validators[i]["LENGTH"],
  19.                          messages: {
  20.                            required: validators[i]["MESSAGE"]
  21.                          }
  22.                         });
  23.                         break;
  24.                     case 'maxlength':
  25.                         $(this).rules("add", {
  26.                          maxlength: validators[i]["LENGTH"],
  27.                          messages: {
  28.                            required: validators[i]["MESSAGE"]
  29.                          }
  30.                         });
  31.                         break;
  32.                     default:
  33.                         // do nothing...

  34.                 }      
  35.               

  36.             }
  37.         });
  38.     });

As you can see, for all widgets in a form, we check for the data-validation json string, parse it and dynamically add validators to the widgets.

This works fine, but in the above example, whenever we loose focus on the combobox, it validates saying that you need to enter two characters at least...  I don't understand why it does...

Does anyone else have an idea?

If you want, I can create a public example...  Just let me know...

---
http://www.flexin.be