yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
define([
    "dojo/_base/declare", // declare
    "dojo/dom-attr", // domAttr.set
    "dojo/keys", // keys.ESCAPE
    "dojo/_base/lang",
    "dojo/on",
    "./_FormWidgetMixin"
], function(declare, domAttr, keys, lang, on, _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){
            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);
        }
    });
});