luci-base: cbi.js: enable validation for dropdown fields
[project/luci.git] / modules / luci-base / htdocs / luci-static / resources / cbi.js
index 662e772bb1630d531790e20f24c3605bc8cb3749..00eb53d7ba491d5a8d6df07293af83d4c70a175a 100644 (file)
@@ -569,7 +569,7 @@ var CBIValidatorPrototype = {
                                        return;
 
                                var input = sibling.querySelector('[data-type]'),
-                                   values = input.getAttribute('data-is-list') ? input.value.match(/[^ \t]+/g) : [ input.value ];
+                                   values = input ? (input.getAttribute('data-is-list') ? input.value.match(/[^ \t]+/g) : [ input.value ]) : null;
 
                                if (values !== null && values.indexOf(ctx.value) !== -1)
                                        unique = false;
@@ -806,7 +806,9 @@ function cbi_combobox_init(id, values, def, man) {
                'class': 'cbi-dropdown',
                'display-items': 5,
                'optional': obj.getAttribute('data-optional'),
-               'placeholder': _('-- Please choose --')
+               'placeholder': _('-- Please choose --'),
+               'data-type': obj.getAttribute('data-type'),
+               'data-optional': obj.getAttribute('data-optional')
        }, [ E('ul') ]);
 
        if (!(obj.value in values) && obj.value.length) {
@@ -1134,6 +1136,7 @@ function cbi_validate_field(cbid, optional, type)
 
                field.addEventListener("blur",  validatorFn);
                field.addEventListener("keyup", validatorFn);
+               field.addEventListener("cbi-dropdown-change", validatorFn);
 
                if (matchesElem(field, 'select')) {
                        field.addEventListener("change", validatorFn);