You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.7 KiB
81 lines
2.7 KiB
define([ |
|
"dojo/_base/declare", // declare |
|
"dojo/dom-attr", // domAttr.set |
|
"dojo/keys", // keys.ESCAPE |
|
"dojo/_base/lang", |
|
"dojo/on", |
|
"dojo/sniff", // has("webkit") |
|
"./_FormWidgetMixin" |
|
], function(declare, domAttr, keys, lang, on, has, _FormWidgetMixin){ |
|
|
|
// module: |
|
// dijit/form/_FormValueMixin |
|
|
|
return declare("dijit.form._FormValueMixin", _FormWidgetMixin, { |
|
// summary: |
|
// Mixin for widgets corresponding to native HTML elements such as `<input>` or `<select>` |
|
// that have user changeable values. |
|
// description: |
|
// Each _FormValueMixin represents a single input value, and has a (possibly hidden) `<input>` element, |
|
// to which it serializes it's input value, so that form submission (either normal submission or via FormBind?) |
|
// works as expected. |
|
|
|
// readOnly: Boolean |
|
// Should this widget respond to user input? |
|
// In markup, this is specified as "readOnly". |
|
// Similar to disabled except readOnly form values are submitted. |
|
readOnly: false, |
|
|
|
_setReadOnlyAttr: function(/*Boolean*/ value){ |
|
// IE has a Caret Browsing mode (hit F7 to activate) where disabled textboxes can be modified |
|
// focusNode enforced readonly if currently disabled to avoid this issue. |
|
if (has('trident') && 'disabled' in this) { |
|
domAttr.set(this.focusNode, 'readOnly', value || this.disabled); |
|
} else { |
|
domAttr.set(this.focusNode, 'readOnly', value); |
|
} |
|
this._set("readOnly", value); |
|
}, |
|
|
|
postCreate: function(){ |
|
this.inherited(arguments); |
|
|
|
// Update our reset value if it hasn't yet been set (because this.set() |
|
// is only called when there *is* a value) |
|
if(this._resetValue === undefined){ |
|
this._lastValueReported = this._resetValue = this.value; |
|
} |
|
}, |
|
|
|
_setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ |
|
// summary: |
|
// Hook so set('value', value) works. |
|
// description: |
|
// Sets the value of the widget. |
|
// If the value has changed, then fire onChange event, unless priorityChange |
|
// is specified as null (or false?) |
|
this._handleOnChange(newValue, priorityChange); |
|
}, |
|
|
|
_handleOnChange: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ |
|
// summary: |
|
// Called when the value of the widget has changed. Saves the new value in this.value, |
|
// and calls onChange() if appropriate. See _FormWidget._handleOnChange() for details. |
|
this._set("value", newValue); |
|
this.inherited(arguments); |
|
}, |
|
|
|
undo: function(){ |
|
// summary: |
|
// Restore the value to the last value passed to onChange |
|
this._setValueAttr(this._lastValueReported, false); |
|
}, |
|
|
|
reset: function(){ |
|
// summary: |
|
// Reset the widget's value to what it was at initialization time |
|
this._hasBeenBlurred = false; |
|
this._setValueAttr(this._resetValue, true); |
|
} |
|
}); |
|
});
|
|
|