root / trunk / web / dojo / dojox / mobile / app / TextBox.js @ 12
History | View | Annotate | Download (3.94 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
| 3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
| 4 | see: http://dojotoolkit.org/license for details
|
||
| 5 | */
|
||
| 6 | |||
| 7 | |||
| 8 | if(!dojo._hasResource["dojox.mobile.app.TextBox"]){ |
||
| 9 | dojo._hasResource["dojox.mobile.app.TextBox"]=true; |
||
| 10 | dojo.provide("dojox.mobile.app.TextBox");
|
||
| 11 | dojo.experimental("dojox.mobile.app.TextBox");
|
||
| 12 | dojo.require("dojox.mobile.app._Widget");
|
||
| 13 | dojo.require("dojox.mobile.app._FormWidget");
|
||
| 14 | dojo.declare("dojox.mobile.app.TextBox",dojox.mobile.app._FormValueWidget,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",baseClass:"mblTextBox",attributeMap:dojo.delegate(dojox.mobile.app._FormValueWidget.prototype.attributeMap,{maxLength:"focusNode"}),buildRendering:function(){ |
||
| 15 | var _1=this.srcNodeRef; |
||
| 16 | if(!_1||_1.tagName!="INPUT"){ |
||
| 17 | _1=dojo.create("input",{});
|
||
| 18 | } |
||
| 19 | dojo.attr(_1,{type:"text",value:dojo.attr(this.srcNodeRef,"value")||"",placeholder:this.placeHolder||null});
|
||
| 20 | this.domNode=this.textbox=this.focusNode=_1; |
||
| 21 | },_setPlaceHolderAttr:function(v){ |
||
| 22 | this.placeHolder=v;
|
||
| 23 | if(this.textbox){ |
||
| 24 | dojo.attr(this.textbox,"placeholder",v); |
||
| 25 | } |
||
| 26 | },_getValueAttr:function(){ |
||
| 27 | return this.parse(this.get("displayedValue"),this.constraints); |
||
| 28 | },_setValueAttr:function(_2,_3,_4){ |
||
| 29 | var _5;
|
||
| 30 | if(_2!==undefined){ |
||
| 31 | _5=this.filter(_2);
|
||
| 32 | if(typeof _4!="string"){ |
||
| 33 | if(_5!==null&&((typeof _5!="number")||!isNaN(_5))){ |
||
| 34 | _4=this.filter(this.format(_5,this.constraints)); |
||
| 35 | }else{
|
||
| 36 | _4="";
|
||
| 37 | } |
||
| 38 | } |
||
| 39 | } |
||
| 40 | if(_4!=null&&_4!=undefined&&((typeof _4)!="number"||!isNaN(_4))&&this.textbox.value!=_4){ |
||
| 41 | this.textbox.value=_4;
|
||
| 42 | } |
||
| 43 | this.inherited(arguments,[_5,_3]); |
||
| 44 | },displayedValue:"",_getDisplayedValueAttr:function(){ |
||
| 45 | return this.filter(this.textbox.value); |
||
| 46 | },_setDisplayedValueAttr:function(_6){ |
||
| 47 | if(_6===null||_6===undefined){ |
||
| 48 | _6="";
|
||
| 49 | }else{
|
||
| 50 | if(typeof _6!="string"){ |
||
| 51 | _6=String(_6); |
||
| 52 | } |
||
| 53 | } |
||
| 54 | this.textbox.value=_6;
|
||
| 55 | this._setValueAttr(this.get("value"),undefined,_6); |
||
| 56 | },format:function(_7,_8){ |
||
| 57 | return ((_7==null||_7==undefined)?"":(_7.toString?_7.toString():_7)); |
||
| 58 | },parse:function(_9,_a){ |
||
| 59 | return _9;
|
||
| 60 | },_refreshState:function(){ |
||
| 61 | },_onInput:function(e){ |
||
| 62 | if(e&&e.type&&/key/i.test(e.type)&&e.keyCode){ |
||
| 63 | switch(e.keyCode){
|
||
| 64 | case dojo.keys.SHIFT:
|
||
| 65 | case dojo.keys.ALT:
|
||
| 66 | case dojo.keys.CTRL:
|
||
| 67 | case dojo.keys.TAB:
|
||
| 68 | return;
|
||
| 69 | } |
||
| 70 | } |
||
| 71 | if(this.intermediateChanges){ |
||
| 72 | var _b=this; |
||
| 73 | setTimeout(function(){
|
||
| 74 | _b._handleOnChange(_b.get("value"),false); |
||
| 75 | },0);
|
||
| 76 | } |
||
| 77 | this._refreshState();
|
||
| 78 | },postCreate:function(){ |
||
| 79 | this.textbox.setAttribute("value",this.textbox.value); |
||
| 80 | this.inherited(arguments); |
||
| 81 | if(dojo.isMoz||dojo.isOpera){
|
||
| 82 | this.connect(this.textbox,"oninput",this._onInput); |
||
| 83 | }else{
|
||
| 84 | this.connect(this.textbox,"onkeydown",this._onInput); |
||
| 85 | this.connect(this.textbox,"onkeyup",this._onInput); |
||
| 86 | this.connect(this.textbox,"onpaste",this._onInput); |
||
| 87 | this.connect(this.textbox,"oncut",this._onInput); |
||
| 88 | } |
||
| 89 | },_blankValue:"",filter:function(_c){ |
||
| 90 | if(_c===null){ |
||
| 91 | return this._blankValue; |
||
| 92 | } |
||
| 93 | if(typeof _c!="string"){ |
||
| 94 | return _c;
|
||
| 95 | } |
||
| 96 | if(this.trim){ |
||
| 97 | _c=dojo.trim(_c); |
||
| 98 | } |
||
| 99 | if(this.uppercase){ |
||
| 100 | _c=_c.toUpperCase(); |
||
| 101 | } |
||
| 102 | if(this.lowercase){ |
||
| 103 | _c=_c.toLowerCase(); |
||
| 104 | } |
||
| 105 | if(this.propercase){ |
||
| 106 | _c=_c.replace(/[^\s]+/g,function(_d){ |
||
| 107 | return _d.substring(0,1).toUpperCase()+_d.substring(1); |
||
| 108 | }); |
||
| 109 | } |
||
| 110 | return _c;
|
||
| 111 | },_setBlurValue:function(){ |
||
| 112 | this._setValueAttr(this.get("value"),true); |
||
| 113 | },_onBlur:function(e){ |
||
| 114 | if(this.disabled){ |
||
| 115 | return;
|
||
| 116 | } |
||
| 117 | this._setBlurValue();
|
||
| 118 | this.inherited(arguments); |
||
| 119 | if(this._selectOnClickHandle){ |
||
| 120 | this.disconnect(this._selectOnClickHandle); |
||
| 121 | } |
||
| 122 | if(this.selectOnClick&&dojo.isMoz){ |
||
| 123 | this.textbox.selectionStart=this.textbox.selectionEnd=undefined; |
||
| 124 | } |
||
| 125 | },_onFocus:function(by){ |
||
| 126 | if(this.disabled||this.readOnly){ |
||
| 127 | return;
|
||
| 128 | } |
||
| 129 | if(this.selectOnClick&&by=="mouse"){ |
||
| 130 | this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){ |
||
| 131 | this.disconnect(this._selectOnClickHandle); |
||
| 132 | var _e;
|
||
| 133 | _e=this.textbox.selectionStart==this.textbox.selectionEnd; |
||
| 134 | if(_e){
|
||
| 135 | this.selectInputText(this.textbox); |
||
| 136 | } |
||
| 137 | }); |
||
| 138 | } |
||
| 139 | this._refreshState();
|
||
| 140 | this.inherited(arguments); |
||
| 141 | },reset:function(){ |
||
| 142 | this.textbox.value=""; |
||
| 143 | this.inherited(arguments); |
||
| 144 | }}); |
||
| 145 | } |