文本框是页面中最常用的输入组件,它的默认使用方式如下:

<input type='text'/>
当然,这里的 `type='text' 可以略去不写。大部分情况下,使用默认的文本框作为输入组件是没什么问题的,但在具体的项目中,难免会有功能扩展的需求。这里仅以如何增加文本框数据的格式化输入输出能力为例说明如何扩展原生的文本框组件。除了本章的内容,你也可以参考官方文档中的 参数映射 一章。
目标组件的功能分析
对于原生的文本框,我们获取到的值是文本类型的,就像下面的示例所展示的:
Example: {
xml: "<input id='input' value='text'/>",
fun: function (sys, items, opts) {
console.log(typeof this.prop("value")); // string
}
}
如果需要其它类型的数值,就需要对获取到的数据进行格式化操作。比如,如果需要整型数,就需要用到 parseInt 函数;如果需要浮点型数,就需要用到 parseFloat 函数。如果我们能够将格式化数据的操作封装起来,那使用起来一定会相当的方便。为了明确我们的预期,不妨先给出目标组件的使用示例。
Index: {
xml: "<div id='index'>\
<TextBox id='foo'/>\
<TextBox id='bar' format='int'/>\
</div>",
fun: function (sys, items, opts) {
items.foo.value = "hello, world";
items.bar.value = 27.1828;
console.log("foo", items.foo.value);
console.log("bar", items.bar.value);
}
}
此示例实例化了两个组件 Input。组件 Input 允许接收一个 format 参数作为其静态接口输入,并提供一个属性 value 作为其动态输入输出接口。format 参数有三种可能的值:string (默认)、int 以及 float。这三种值分别对应三种数据类型:字符串型、整型和浮点型。属性 value 根据 format 的值来进行格式化输入输出。示例的输出结果应该会是下面这样子:
hello, world
227
目标组件的实现
为了完成上面的目标组件,我们先给出一个文本框的组件框架。
TextBox: {
xml: "<input id='input' type='text'/>",
opt: { format: "string" },
fun: function (sys, items, opts) {
var parse = {"int": parseInt, "float": parseFloat, "string": String}[opts.format];
function getValue() {
// 这里需要获取 input 的值并根据 opts.format 值选择适当的格式化函数,
}
function setValue(value) {
// 这里需要根据 opts.format 值选择适当的格式化函数,对 value 进行格式化后同去赋值
}
return Object.defineProperty({}, "value", { get: getValue, set: setValue });
}
}
上面关键的地方在于格式化函数的选取,为了简单化,我们采用的是表查询方式。在组件初始化阶段该函数就已经准备就绪了,上述的 parse 函数即所需的格式化函数。不过需要注意的是,该组件的格式化函数类型在组件初始化时就固定了。如果需要可变的格式化函数,你需要对组件做些修正。好了,下面可以给出完整的的文本框组件了。
TextBox: {
xml: "<input id='input' type='text'/>",
opt: { format: 'string' },
map: { attrs: { input: "disabled value placeholder readonly" } },
fun: function (sys, items, opts) {
var parse = {"int": parseInt, "float": parseFloat, "string": String}[opts.format];
function getValue() {
return parse(sys.input.prop("value"));
}
function setValue(value) {
sys.input.prop("value", parse(value));
}
return Object.defineProperty({}, "value", { get: getValue, set: setValue });
}
}
另外请注意,上面组件添加了部分属性映射的内容,这可以在具体的项目中根据需要进行增删。
本系列文章基于 xmlplus 框架。如果你对 xmlplus 没有多少了解,可以访问 www.xmlplus.cn。这里有详尽的入门文档可供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# xmlplus
# 文本框
# TextBox
# xmlplus组件设计系列之网格(DataGrid)(10)
# xmlplus组件设计系列之选项卡(Tabbar)(5)
# xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
# xmlplus组件设计系列之路由(ViewStack)(7)
# xmlplus组件设计系列之分隔框(DividedBox)(8)
# xmlplus组件设计系列之树(Tree)(9)
# xmlplus组件设计系列之按钮(2)
# xmlplus组件设计系列之列表(4)
# xmlplus组件设计系列之图标(ICON)(1)
# 的是
# 浮点
# 为其
# 整型
# 文档
# 会有
# 好了
# 就像
# 但在
# 所需
# 三种
# 你对
# 请注意
# 可供
# 为例
# 时就
# 提供一个
# 这样子
# 这可
相关文章:
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
动图在线制作网站有哪些,滑动动图图集怎么做?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
,sp开头的版面叫什么?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
名字制作网站免费,所有小说网站的名字?
如何选择高效响应式自助建站源码系统?
建站主机如何安装配置?新手必看操作指南
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站主机选购指南:核心配置优化与品牌推荐方案
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在阿里云域名上完成建站全流程?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何高效完成自助建站业务培训?
建站168自助建站系统:快速模板定制与SEO优化指南
如何在IIS7上新建站点并设置安全权限?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何在阿里云部署织梦网站?
如何高效生成建站之星成品网站源码?
,网站推广常用方法?
如何用花生壳三步快速搭建专属网站?
制作宣传网站的软件,小红书可以宣传网站吗?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
建站之星收费标准详解:套餐费用及年费价格表一览
建站与域名管理如何高效结合?
如何制作算命网站,怎么注册算命网站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机如何选?性能与价格怎样平衡?
建站之星如何助力网站排名飙升?揭秘高效技巧
建站之星如何一键生成手机站?
如何选择服务器才能高效搭建专属网站?
如何快速生成专业多端适配建站电话?
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何快速上传建站程序避免常见错误?
如何确保FTP站点访问权限与数据传输安全?
如何用PHP工具快速搭建高效网站?
招商网站制作流程,网站招商广告语?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何通过宝塔面板实现本地网站访问?
如何用美橙互联一键搭建多站合一网站?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
历史网站制作软件,华为如何找回被删除的网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何用PHP快速搭建高效网站?分步指南
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
*请认真填写需求信息,我们会在24小时内与您取得联系。