X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2Fform%2FComboBoxArray.js;h=9534e3e208a25bd5f1c46db73482dea7e43e92b5;hb=a93261d972466d13c76cbb129c00d02973668013;hp=8ad46f99e710b62a1ad6503e9e04be95dcba0b03;hpb=1a02b874b795ee74fd96ccf8576fa3a8f4a90991;p=roojs1 diff --git a/Roo/form/ComboBoxArray.js b/Roo/form/ComboBoxArray.js index 8ad46f99e7..9534e3e208 100644 --- a/Roo/form/ComboBoxArray.js +++ b/Roo/form/ComboBoxArray.js @@ -36,6 +36,17 @@ Roo.form.ComboBoxArray = function(config) { + this.addEvents({ + /** + * @event remove + * Fires when remove the value from the list + * @param {Roo.form.ComboBoxArray} _self This combo box array + * @param {Roo.form.ComboBoxArray.Item} item removed item + */ + 'remove' : true + + + }); Roo.form.ComboBoxArray.superclass.constructor.call(this, config); @@ -297,7 +308,7 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField, }, this) } - if (typeof(v) == 'object') { + if (typeof(v) == 'object' ) { // then let's assume it's an array of objects.. Roo.each(v, function(l) { this.addItem(l); @@ -335,10 +346,46 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField, }, + /** + * Validates the combox array value + * @return {Boolean} True if the value is valid, else false + */ + validate : function(){ + if(this.disabled || this.validateValue(this.processValue(this.getValue()))){ + this.clearInvalid(); + return true; + } + return false; + }, validateValue : function(value){ return Roo.form.ComboBoxArray.superclass.validateValue.call(this, this.getValue()); + }, + + /*@ + * overide + * + */ + isDirty : function() { + if(this.disabled) { + return false; + } + + try { + var d = Roo.decode(String(this.originalValue)); + } catch (e) { + return String(this.getValue()) !== String(this.originalValue); + } + + var originalValue = []; + + for (var i = 0; i < d.length; i++){ + originalValue.push(d[i][this.valueField]); + } + + return String(this.getValue()) !== String(originalValue.join(',')); + } }); @@ -405,30 +452,21 @@ Roo.extend(Roo.form.ComboBoxArray.Item, Roo.BoxComponent, { String.format('{0}',this.data[this.tipField]) ); + if(this.cb.disabled){ + return; + } + this.el.child('img').on('click', this.remove, this); }, remove : function() { - this.cb.items.remove(this); this.el.child('img').un('click', this.remove, this); this.el.remove(); this.cb.updateHiddenEl(); - }, - - /** - * Validates the combox array value - * @return {Boolean} True if the value is valid, else false - */ - validate : function(){ - if(this.disabled || this.validateValue(this.processValue(this.getValue()))){ - this.clearInvalid(); - return true; - } - return false; + + this.cb.fireEvent('remove', this.cb, this); } - - }); \ No newline at end of file