Dojo学习笔记(十三):Dojo表单控件――TextBox及其变体

前端之家收集整理的这篇文章主要介绍了Dojo学习笔记(十三):Dojo表单控件――TextBox及其变体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、通用方法

dijit/form/TextBox :一个基本的文本框

dijit/form/SimpleTextarea :大量文字输入,一个基本的textarea

dijit/form/Textarea :一个扩展dijit/form/SimpleTextarea动态增加或减少其高度

dijit/form/NumberTextBoxdijit/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样式。

--申明方式:

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  5. <script>dojoConfig={parSEOnLoad:true}</script>
  6. <scriptsrc='dojo/dojo.js'></script>
  7. <script>
  8. require(["dojo/parser","dijit/form/TextBox","dojo/domReady!"]);
  9. </script>
  10. <title>TextBox</title>
  11. </head>
  12. <bodyclass="claro">
  13. <labelfor="firstname">Auto-trimming,Proper-casingTextBox:</label>
  14. <inputtype="text"name="firstname"value="testingtesting"
  15. data-dojo-type="dijit/form/TextBox"
  16. data-dojo-props="trim:true,propercase:true"id="firstname"/>
  17. </body>
  18. </html>

结果:

wKiom1RSXG2TsHeyAACiYxAEI2Q870.jpg

--编程方式

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  5. <script>dojoConfig={parSEOnLoad:true}</script>
  6. <scriptsrc='dojo/dojo.js'></script>
  7. <script>
  8. require(["dijit/form/TextBox","dojo/domReady!"],function(TextBox){
  9. varmyTextBox=newdijit.form.TextBox({
  10. name:"firstname",value:""/*nooremptyvalue!*/,placeHolder:"typeinyourname"
  11. },"firstname");
  12. });
  13. </script>
  14. <title>TextBox</title>
  15. </head>
  16. <bodyclass="claro">
  17. <inputid="firstname"/>
  18. </body>
  19. </html>

结果:

wKioL1RSXWPwpyqlAACGmVPtBtk042.jpg

注意:placeHolder和value属性的区别,placeHolder在输入框处入焦点时文字会消失,而value不会。

--使用set()方法和get()方法

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  5. <script>dojoConfig={parSEOnLoad:true}</script>
  6. <scriptsrc='dojo/dojo.js'></script>
  7. <script>
  8. require(["dojo/parser","dijit/registry","dojo/on",function(parser,registry,on){
  9. parser.parse();
  10. varBox0=registry.byId("value0Box");
  11. varBox1=registry.byId("value1Box");
  12. Box1.set("value",Box0.get("value")+"modified");
  13. on(Box0,"change",function(){
  14. Box1.set("value",Box0.get("value")+"modified");
  15. });
  16. });
  17. </script>
  18. <title>TextBox</title>
  19. </head>
  20. <bodyclass="claro">
  21. <labelfor="value0Box">AtextBoxwithavalue:</label>
  22. <inputid="value0Box"data-dojo-type="dijit/form/TextBox"
  23. value="Somevalue"
  24. data-dojo-props="intermediateChanges:true"></input>
  25. <br>
  26. <labelfor="value1Box">AtextBoxsetwithavaluefromtheabovetextBox:</label>
  27. <inputid="value1Box"
  28. data-dojo-type="dijit/form/TextBox"></input>
  29. <br>
  30. </body>
  31. </html>


--综合应用:

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  5. <script>dojoConfig={parSEOnLoad:true}</script>
  6. <scriptsrc='dojo/dojo.js'></script>
  7. <script>
  8. //loadrequirementsfordeclarativewidgetsinpagecontent
  9. require(["dijit/form/NumberTextBox","dijit/form/CurrencyTextBox","dijit/form/TimeTextBox","dijit/form/DateTextBox",function(NumberTextBox,CurrencyTextBox,TimeTextBox,DateTextBox){
  10. varnumber=newNumberTextBox({
  11. value:54,required:true
  12. },"number");
  13. number.startup();
  14. varcurrency=newCurrencyTextBox({
  15. value:54775.53,required:true,constraints:{fractional:true},currency:"CNY",invalidMessage:"无效值."
  16. },"currency");
  17. currency.startup();
  18. vartime=newTimeTextBox({
  19. constraints:{
  20. timePattern:"HH:mm:ss",clickableIncrement:"T00:15:00",visibleIncrement:"T00:15:00",visibleRange:"T01:00:00"
  21. },invalidMessage:"Invalidtime."
  22. },"time");
  23. time.startup();
  24. vardate=newDateTextBox({
  25. value:newDate(2011,8,15)
  26. },"date");
  27. date.startup();
  28. });
  29. </script>
  30. <title>TextBox</title>
  31. </head>
  32. <bodyclass="claro">
  33. <h1>dijit/form/NumberTextBox,dijit/form/CurrencyTextBox,dijit/form/TimeTextBox,dijit/form/DateTextBox</h1>
  34. <div>
  35. <labelfor="number">Age:</label>
  36. <inputid="number">
  37. </div>
  38. <div>
  39. <labelfor="currency">AnnualSalary:</label>
  40. <inputid="currency">
  41. </div>
  42. <div>
  43. <labelfor="time">StartTime:</label>
  44. <inputid="time">
  45. </div>
  46. <div>
  47. <labelfor="date">StartDate:</label>
  48. <inputid="date">
  49. </div>
  50. </body>
  51. </html>

结果:

wKiom1RU-93B6k7HAAITvGdvWVc441.jpg



2、 dijit/form/ValidationTextBox

Extends: dijit/form/TextBox,利用required属性指定字段必填,regExp属性指定字段验证规则。

  1. <!DOCTYPEHTML>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="utf-8">
  5. <title>Demo:ValidateTextBox</title>
  6. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  7. <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,parSEOnLoad:true"></script>
  8. <styletype="text/css">
  9. label{
  10. display:inline-block;
  11. width:140px;
  12. }
  13. </style>
  14. <script>
  15. require(["dojo/parser","dijit/form/ValidationTextBox"]);
  16. </script>
  17. </head>
  18. <bodyclass="claro">
  19. <labelfor="zip">Also5-DigitU.S.Zipcodeonly:</label>
  20. <inputtype="text"id="zip"name="zip"value="00000"required="true"
  21. data-dojo-type="dijit/form/ValidationTextBox"
  22. data-dojo-props="regExp:'\\d{5}',invalidMessage:'Invalidzipcode.'"/>
  23. </body>
  24. </html>

输出

wKiom1RXNKeAnd1pAACW-c2Gpkc756.jpg


3、 dijit/form/ComboBox

Extends: dijit/form/ValidationTextBox,dijit/form/ComboBoxMixin。ComBoxBox包含可选值的下拉列表,另外还可以手工输入。

属性 属性类别 描述
autoComplete Boolean
true
判断是否自动完成用户输入的内容。当值为真时,用户输入部分字符串,ComboBox widget 会把能匹配上的可选值列出,如果光标离开此 widget,会显示第一个匹配的选项值。
hasDownArrow 判断是否现实下拉按钮。
ignoreCase 判断是否忽略大小写(针对英文的输入)。
pageSize Integer
Infinity
属性可以设置下拉列表显示的条数,如果出现多页的情况,会在下拉列表中显示” PrevIoUs choices ”和” More choices ”按钮。用户可以通过点击这两个按钮来查找选项。
query Object
{}
设置查询表达式以过滤’ store ’里的选项。
searchAttr String
name
设置查找的匹配表达式
searchDelay boolean
true
用户输入内容后到 Dojo 开始查找用户输入值的匹配项之间的间隔时间。
store Object 数据提供对象的一个引用。 .Dijit 中一般应用 JSON 格式的数据。

--编程方式样例:

  1. <!DOCTYPEHTML>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="utf-8">
  5. <title>Demo:ComboBox</title>
  6. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  7. <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,parSEOnLoad:true"></script>
  8. <styletype="text/css">
  9. label{
  10. display:inline-block;
  11. width:140px;
  12. }
  13. </style>
  14. <script>
  15. require([
  16. "dojo/store/Memory","dijit/form/ComboBox","dojo/domReady!"
  17. ],function(Memory,ComboBox){
  18. varstateStore=newMemory({
  19. data:[
  20. {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"}
  21. ]
  22. });
  23. varcomboBox=newComboBox({
  24. id:"stateSelect",name:"state",value:"California",store:stateStore,searchAttr:"name"
  25. },"stateSelect");
  26. });
  27. </script>
  28. </head>
  29. <bodyclass="claro">
  30. <inputid="stateSelect">
  31. <p><buttononClick="alert(dijit.byId('stateSelect').get('value'))">Getvalue</button></p>
  32. </body>
  33. </html>
  1. <!DOCTYPEHTML>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="utf-8">
  5. <title>Demo:ComboBox</title>
  6. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  7. <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,"dijit/form/ComboBox"]);
  8. </script>
  9. </head>
  10. <bodyclass="claro">
  11. <selectdata-dojo-type="dijit/form/ComboBox"id="fruit"name="fruit">
  12. <option>Apples</option>
  13. <optionselected>Oranges</option>
  14. <option>Pears</option>
  15. </select>
  16. </body>
  17. </html>

--select样例:

  1. <!DOCTYPEHTML>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="utf-8">
  5. <title>Demo:ComboBox</title>
  6. <linkrel="stylesheet"href="dijit/themes/claro/claro.css">
  7. <scriptsrc="dojo/dojo.js"data-dojo-config="async:true,"dojo/store/Memory"]);
  8. </script>
  9. </head>
  10. <bodyclass="claro">
  11. <divdata-dojo-type="dojo/store/Memory"
  12. data-dojo-id="stateStore"
  13. data-dojo-props="data:[{id:'y',name:'yes'},{id:'n',name:'no'}]"></div>
  14. <inputdata-dojo-type="dijit/form/ComboBox"
  15. value="yes"
  16. data-dojo-props="store:stateStore,searchAttr:'name'"
  17. name="state"
  18. id="stateInput"/>
  19. </body>
  20. </html>

猜你在找的Dojo相关文章