Dojo学习笔记(十三):Dojo表单控件――TextBox及其变体
1、通用方法 dijit/form/TextBox :一个基本的文本框 dijit/form/SimpleTextarea :大量文字输入,一个基本的textarea dijit/form/Textarea :一个扩展dijit/form/SimpleTextarea动态增加或减少其高度 dijit/form/NumberTextBox或dijit/form/NumberSpinner:输入是数字,确保输入一个文本框,dijit/form/NumberSpinner提供扩展dijit/form/NumberTextBox逐步改变值的按钮 dijit/form/DateTextBox :输入是日期,一个文本框,其中包括一个弹出日历 dijit/form/TimeTextBox :输入是时间,一个文本框,其中包括一个弹出时间选择器 dijit/form/CurrencyTextBox :输入是货币,一个扩展dijit/form/NumberTextBox本地化货币 dijit/form/ValidationTextBox:一个基本的验证能力,可以进一步定制 如果你要使用dijit/form/DateTextBox或dijit/form/TimeTextBox ,你将需要有主题的CSS引入并设置body元素的css样式。 --申明方式: <!DOCTYPEhtml> <html> <head> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <script>dojoConfig={parSEOnLoad:true}</script> <scriptsrc='dojo/dojo.js'></script> <script> require(["dojo/parser","dijit/form/TextBox","dojo/domReady!"]); </script> <title>TextBox</title> </head> <bodyclass="claro"> <labelfor="firstname">Auto-trimming,Proper-casingTextbox:</label> <inputtype="text"name="firstname"value="testingtesting" data-dojo-type="dijit/form/TextBox" data-dojo-props="trim:true,propercase:true"id="firstname"/> </body> </html> 结果: --编程方式 <!DOCTYPEhtml> <html> <head> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <script>dojoConfig={parSEOnLoad:true}</script> <scriptsrc='dojo/dojo.js'></script> <script> require(["dijit/form/TextBox","dojo/domReady!"],function(TextBox){ varmyTextBox=newdijit.form.TextBox({ name:"firstname",value:""/*nooremptyvalue!*/,placeHolder:"typeinyourname" },"firstname"); }); </script> <title>TextBox</title> </head> <bodyclass="claro"> <inputid="firstname"/> </body> </html> 结果: 注意:placeHolder和value属性的区别,placeHolder在输入框处入焦点时文字会消失,而value不会。 --使用set()方法和get()方法: <!DOCTYPEhtml> <html> <head> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <script>dojoConfig={parSEOnLoad:true}</script> <scriptsrc='dojo/dojo.js'></script> <script> require(["dojo/parser","dijit/registry","dojo/on",function(parser,registry,on){ parser.parse(); varbox0=registry.byId("value0Box"); varbox1=registry.byId("value1Box"); box1.set("value",box0.get("value")+"modified"); on(box0,"change",function(){ box1.set("value",box0.get("value")+"modified"); }); }); </script> <title>TextBox</title> </head> <bodyclass="claro"> <labelfor="value0Box">Atextboxwithavalue:</label> <inputid="value0Box"data-dojo-type="dijit/form/TextBox" value="Somevalue" data-dojo-props="intermediateChanges:true"></input> <br> <labelfor="value1Box">Atextboxsetwithavaluefromtheabovetextbox:</label> <inputid="value1Box" data-dojo-type="dijit/form/TextBox"></input> <br> </body> </html> --综合应用: <!DOCTYPEhtml> <html> <head> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <script>dojoConfig={parSEOnLoad:true}</script> <scriptsrc='dojo/dojo.js'></script> <script> //loadrequirementsfordeclarativewidgetsinpagecontent require(["dijit/form/NumberTextBox","dijit/form/CurrencyTextBox","dijit/form/TimeTextBox","dijit/form/DateTextBox",function(NumberTextBox,CurrencyTextBox,TimeTextBox,DateTextBox){ varnumber=newNumberTextBox({ value:54,required:true },"number"); number.startup(); varcurrency=newCurrencyTextBox({ value:54775.53,required:true,constraints:{fractional:true},currency:"CNY",invalidMessage:"无效值." },"currency"); currency.startup(); vartime=newTimeTextBox({ constraints:{ timePattern:"HH:mm:ss",clickableIncrement:"T00:15:00",visibleIncrement:"T00:15:00",visibleRange:"T01:00:00" },invalidMessage:"Invalidtime." },"time"); time.startup(); vardate=newDateTextBox({ value:newDate(2011,8,15) },"date"); date.startup(); }); </script> <title>TextBox</title> </head> <bodyclass="claro"> <h1>dijit/form/NumberTextBox,dijit/form/CurrencyTextBox,dijit/form/TimeTextBox,dijit/form/DateTextBox</h1> <div> <labelfor="number">Age:</label> <inputid="number"> </div> <div> <labelfor="currency">AnnualSalary:</label> <inputid="currency"> </div> <div> <labelfor="time">StartTime:</label> <inputid="time"> </div> <div> <labelfor="date">StartDate:</label> <inputid="date"> </div> </body> </html> 结果: 2、 dijit/form/ValidationTextBox Extends: dijit/form/TextBox,利用required属性指定字段必填,regExp属性指定字段验证规则。 <!DOCTYPEHTML> <htmllang="en"> <head> <metacharset="utf-8"> <title>Demo:ValidateTextBox</title> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,parSEOnLoad:true"></script> <styletype="text/css"> label{ display:inline-block; width:140px; } </style> <script> require(["dojo/parser","dijit/form/ValidationTextBox"]); </script> </head> <bodyclass="claro"> <labelfor="zip">Also5-DigitU.S.Zipcodeonly:</label> <inputtype="text"id="zip"name="zip"value="00000"required="true" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="regExp:'d{5}',invalidMessage:'Invalidzipcode.'"/> </body> </html> 输出: 3、 dijit/form/ComboBox Extends: dijit/form/ValidationTextBox,dijit/form/ComboBoxMixin。ComboxBox包含可选值的下拉列表,另外还可以手工输入。
--编程方式样例: <!DOCTYPEHTML> <htmllang="en"> <head> <metacharset="utf-8"> <title>Demo:ComboBox</title> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,parSEOnLoad:true"></script> <styletype="text/css"> label{ display:inline-block; width:140px; } </style> <script> require([ "dojo/store/Memory","dijit/form/ComboBox","dojo/domReady!" ],function(Memory,ComboBox){ varstateStore=newMemory({ data:[ {name:"Alabama",id:"AL"},{name:"Alaska",id:"AK"},{name:"AmericanSamoa",id:"AS"},{name:"Arizona",id:"AZ"},{name:"Arkansas",id:"AR"},{name:"ArmedForcesEurope",id:"AE"},{name:"ArmedForcesPacific",id:"AP"},{name:"ArmedForcestheAmericas",id:"AA"},{name:"California",id:"CA"},{name:"Colorado",id:"CO"},{name:"Connecticut",id:"CT"},{name:"Delaware",id:"DE"} ] }); varcomboBox=newComboBox({ id:"stateSelect",name:"state",value:"California",store:stateStore,searchAttr:"name" },"stateSelect"); }); </script> </head> <bodyclass="claro"> <inputid="stateSelect"> <p><buttononClick="alert(dijit.byId('stateSelect').get('value'))">Getvalue</button></p> </body> </html> <!DOCTYPEHTML> <htmllang="en"> <head> <metacharset="utf-8"> <title>Demo:ComboBox</title> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,"dijit/form/ComboBox"]); </script> </head> <bodyclass="claro"> <selectdata-dojo-type="dijit/form/ComboBox"id="fruit"name="fruit"> <option>Apples</option> <optionselected>Oranges</option> <option>Pears</option> </select> </body> </html> --select样例: <!DOCTYPEHTML> <htmllang="en"> <head> <metacharset="utf-8"> <title>Demo:ComboBox</title> <linkrel="stylesheet"href="dijit/themes/claro/claro.css"> <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,"dojo/store/Memory"]); </script> </head> <bodyclass="claro"> <divdata-dojo-type="dojo/store/Memory" data-dojo-id="stateStore" data-dojo-props="data:[{id:'y',name:'yes'},{id:'n',name:'no'}]"></div> <inputdata-dojo-type="dijit/form/ComboBox" value="yes" data-dojo-props="store:stateStore,searchAttr:'name'" name="state" id="stateInput"/> </body> </html> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |