12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dijit.form.TimeTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dijit.form.TimeTextBox"] = true;
- dojo.provide("dijit.form.TimeTextBox");
- dojo.require("dijit._TimePicker");
- dojo.require("dijit.form._DateTimeTextBox");
- /*=====
- dojo.declare(
- "dijit.form.TimeTextBox.__Constraints",
- [dijit.form._DateTimeTextBox.__Constraints, dijit._TimePicker.__Constraints]
- );
- =====*/
- dojo.declare(
- "dijit.form.TimeTextBox",
- dijit.form._DateTimeTextBox,
- {
- // summary:
- // A validating, serializable, range-bound time text box with a drop down time picker
- baseClass: "dijitTextBox dijitComboBox dijitTimeTextBox",
- popupClass: "dijit._TimePicker",
- _selector: "time",
- /*=====
- // constraints: dijit.form.TimeTextBox.__Constraints
- constraints:{},
- =====*/
- // value: Date
- // The value of this widget as a JavaScript Date object. Note that the date portion implies time zone and daylight savings rules.
- //
- // Example:
- // | new dijit.form.TimeTextBox({value: dojo.date.stamp.fromISOString("T12:59:59", new Date())})
- //
- // When passed to the parser in markup, must be specified according to locale-independent
- // `dojo.date.stamp.fromISOString` format.
- //
- // Example:
- // | <input dojotype='dijit.form.TimeTextBox' value='T12:34:00'>
- value: new Date(""), // value.toString()="NaN"
- //FIXME: in markup, you have no control over daylight savings
- _onKey: function(evt){
- if(this.disabled || this.readOnly){ return; }
- this.inherited(arguments);
- // If the user has backspaced or typed some numbers, then filter the result list
- // by what they typed. Maybe there's a better way to detect this, like _handleOnChange()?
- switch(evt.keyCode){
- case dojo.keys.ENTER:
- case dojo.keys.TAB:
- case dojo.keys.ESCAPE:
- case dojo.keys.DOWN_ARROW:
- case dojo.keys.UP_ARROW:
- // these keys have special meaning
- break;
- default:
- // setTimeout() because the keystroke hasn't yet appeared in the <input>,
- // so the get('displayedValue') call below won't give the result we want.
- setTimeout(dojo.hitch(this, function(){
- // set this.filterString to the filter to apply to the drop down list;
- // it will be used in openDropDown()
- var val = this.get('displayedValue');
- this.filterString = (val && !this.parse(val, this.constraints)) ? val.toLowerCase() : "";
-
- // close the drop down and reopen it, in order to filter the items shown in the list
- // and also since the drop down may need to be repositioned if the number of list items has changed
- // and it's being displayed above the <input>
- if(this._opened){
- this.closeDropDown();
- }
- this.openDropDown();
- }), 0);
- }
- }
- }
- );
- }
|