微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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样式。

--申明方式:

<!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>

结果:

wKiom1RSXG2TsHeyAACiYxAEI2Q870.jpg

--编程方式

<!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>

结果:

wKioL1RSXWPwpyqlAACGmVPtBtk042.jpg

注意: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>

结果:

wKiom1RU-93B6k7HAAITvGdvWVc441.jpg



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>

输出

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 格式的数据。

--编程方式样例:

<!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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我有一个网格,可以根据更大的树结构编辑小块数据.为了更容易知道用户保存了什么,我希望当用户第一次看到网格时,网格处于不可编辑状态.当用户准备好后,他们可以单击编辑按钮,这将使网格的某些部分可编辑.然后,有一个保存或取消按钮可以保存更改或还原.在大多数情况下它是有效的.但
我即将开始开发一款教育性的视频游戏.我已经决定以一种我可以轻松打包为Web,Mobiles和可能的Standalone版本的方式来实现这一目标.我不想使用Flash.因此,我确信(无论如何我会听取建议)使用JavaScript和SVG.我正在对这个问题进行大量研究,但我很难把各个部分放在一起.我知道Raphae
我正在使用带有Grails2.3.9的Dojo1.9.DojoNumberTextBox小部件–我在表单中使用–将固定格式(JavaScript基本格式)的实数值(例如:12.56)设置为HTML表单输入字段(但根据浏览器区域设置显示/编辑它们,所以用户总是看到格式正确的数字).另一方面,Grails期望输入字段根据浏览器
1.引言鉴于个人需求的转变,本系列将记录自学arcgisapiforjavaScript的学习历程,本篇将从最开始的arcgisapiforjavaScript部署开始,个人声明:博文不在传道受业解惑,旨在方便日后复习查阅。由于是自学,文章中可能会出现一些纰漏,请留言指出,不必留有情面哦!2.下载ArcGISforDe
我正在阅读使用dojo’sdeclare进行类创建的语法.描述令人困惑:Thedeclarefunctionisdefinedinthedojo/_base/declaremodule.declareacceptsthreearguments:className,superClass,andproperties.ClassNameTheclassNameargumentrepresentsthenameofthec
我的团队由更多的java人员和JavaScript经验丰富组成.我知道这个问题曾多次被问到,但为了弄清楚我的事实,我需要澄清一些事情,因为我在客户端技术方面的经验非常有限.我们决定使用GWT而不是纯JavaScript框架构建我们的解决方案(假设有更多的Java经验).这些是支持我的决定的事实.>
路由dojo/framework/srcouting/README.mdcommitb682b06ace25eea86d190e56dd81042565b35ed1Dojo应用程序的路由路由FeaturesRoute配置路径参数RouterHistoryManagersHashHistoryStateHistoryMemoryHistoryOutletEventRouterContextInjectionOutl
请原谅我的无知,因为我对jquery并不熟悉.是否有dojo.connect()的等价物?我找到了这个解决方案:http:/hink-robot.com/2009/06/hitch-object-oriented-event-handlers-with-jquery/但是没有断开功能!你知道jquery的其他解决方案吗?有jquery.connect但这个插件在我的测试中不起作用.
与java类一样,在dojo里也可以定义constructor 构造函数,在创建一个实例时可以对需要的属性进行初始化。//定义一个类mqsy_yjvar mqsy_yj=declare(null,{     //thedefaultusername    username: "yanjun",          //theconstructor   
我一直在寻找一些最佳实践,并想知道Dojo是否具有框架特定的最佳实践,还是最好只使用通用的Javascript标准?特别是我主要是寻找一些功能和类评论的指导方针?解决方法:对于初学者来说,这是项目的风格指南:DojoStyleGuide