利用Knockoutjs对电话号码进行验证
问题来源
最近在项目中前端使用Knockoutjs,验证模块自然也是使用Knockoutjs来进行表单验证了,比较头痛,因为没有使用过Knockoutjs,更加别说要去用它做表单验证了,于是乎恶补了一下Knockoutjs相关的验证用法,也好记录一下!
验证需求
这里只是抽出手机号码验证进行举例一下,其他验证类似!
1、手机号码可以填,可以不填,但填了,必须是要正确格式才能提交
2、如果手机号码错误,则给出相应提示,并聚焦当前文本框
例子演示
根据查阅资料,对于Knockoutjs本身来说,没有提供验证模块,不过,有第三方的扩展,就像你为jquery库作extensions一样,knockout也有一个自己的验证扩展knockout.validation.js,用它来实现对HTML标记的验证!
首先要引入这两个JS文件
<script src="~/Scripts/knockout-3.2.0.js"></script>
<script src="~/Scripts/knockout.validation.min.js"></script>
看前端js代码
<script type="text/ecmascript">
var UserInfo = function () {
var self = this; self.Phone = ko.observable('').extend({
validation: {
validator: function (val, someOtherVal) {
var telReg = !!val.match(/^(||)?([-]|[]|[]|[-]|[])[-]{}$/);
if (val == "") {//如果为空,直接通过
return true;
} //如果手机号码不能通过验证
else if (telReg == false) { return false;
}
else {
return true;
} },
message: '请输入正确格式的号码',
params:
},
required: false
}) self.Email = ko.observable().extend({
required: {
params: true,
message: "请输入你的邮箱"
},
email: {
params: true,
message: "邮箱格式不正确"
}
}); self.SubmitMsg= function () {
self.errors = ko.validation.group(self);
if (self.isValid()) {
alert('提交成功');
} else {
self.errors.showAllMessages();
}
}; }
var viewModel = new UserInfo();
ko.applyBindings(viewModel); </script>
看看html部分
<fieldset>
<legend>个人信息</legend>
<div class="editor-label">
<input data-bind='value: Phone' />
</div>
<div class="editor-field">
<input data-bind='value: Email' />
</div>
<p>
<input type="button" value="提交" data-bind="click:SubmitMsg" />
</p>
</fieldset>
至此验证完成,先分析一下,分别对做了数据有效性的验证,并且每个验证中的参数都可以以JS对象或者属性的形式存在,相信可以很清楚的看到,如果是JS对象的话,那么params表示参数的值,而message表示提示的信息,当然里面的验证属性,你可以自定义自己的提示来做。
利用Knockoutjs对电话号码进行验证的更多相关文章
- 利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转
最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更 ...
- 支持向量机(SVM)利用网格搜索和交叉验证进行参数选择
上一回有个读者问我:回归模型与分类模型的区别在哪?有什么不同,我在这里给他回答一下 : : : : 回归问题通常是用来预测一个值,如预测房价.未来的天气情况等等,例如一个产品的实际价格为500元,通过 ...
- 利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. ...
- 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
一.前言 利用FPGA设计算法一直以来都是热点,同样也是难点.将复杂的数学公式 模型通过硬件系统来搭建,在低延时 高并行性等优势背后极大提高了设计难度和开发周期.Xilinx公司的sysGen(sys ...
- 利用ZYNQ SOC快速打开算法验证通路(4)——AXI DMA使用解析及环路测试
一.AXI DMA介绍 本篇博文讲述AXI DMA的一些使用总结,硬件IP子系统搭建与SDK C代码封装参考米联客ZYNQ教程.若想让ZYNQ的PS与PL两部分高速数据传输,需要利用PS的HP(高性能 ...
- 利用ZYNQ SOC快速打开算法验证通路(2)——数据传输最简方案:网络调试助手+W5500协议栈芯片
在上一篇该系列博文中讲解了MATLAB待处理数据写入.bin二进制数据文件的过程,接下来需要将数据通过以太网发送到ZYNQ验证平台.之前了解过Xilinx公司面向DSP开发的System Genera ...
- 利用工具破解HTTP身份验证的多种方法
https://www.hackingarticles.in/multiple-ways-to-exploiting-http-authentication/ 1)场景 利用Apache配置HTTP验 ...
- 利用Hutool-(Java工具类)实现验证码校验
目录 Hutool工具类介绍 Hutool实现验证码生成 测试验证码生成 其他样式的验证码 第一篇是纯利用现有JDK提供的绘图类(ImageIO)类制作,这个过程比较复杂且需要了解ImageIO类. ...
- 利用javascript对提交数据验证
优点:提交前验证.在客户端进行. <html> <head> <script language="javascript"> function c ...
随机推荐
- 31、iOS 正则表达式判断UITextField是否为全汉字,全字母,全数字,数字和字母
判断全汉字 if ([self deptNameInputShouldChinese]) { [DemonAlertHelper showToastWithMessage:@"只能是中文&q ...
- Python开课复习-10/10
1. 什么时匿名函数def 定义 的是有名函数:特点是可以通过名字重复调用 def func(): #func = 函数的内存地址 pass匿名函数就是没有名字的函数:特点是只能在定义时使用一次 2. ...
- hadoop 修改datanode balance带宽使用限制
前段时间,一个客户现场的Hadoop看起来很不正常,有的机器的存储占用达到95%,有的机器只有40%左右,刚好前任的负责人走了,这边还没有明确接班人的时候. 我负责的大数据计算部分,又要依赖Hadoo ...
- keras环境
Windows 7 python3.6 在安装 Keras 之前, 需要确认自己已经安装好了 Numpy 和 Scipy. 安装个anaconda3就可以搞定 因为 Keras 是基于 Tensorf ...
- Mat补充
Mat的创建 1.使用Mat的构造函数 Mat test(2,2,CV_8UC3,Scalar(0,0,255)); 2.使用Mat的构造函数 int sizes[3] = {2,2,2}; Mat ...
- GDI基础(2):绘制文本
1.TextOut()和DrawText()函数 CDC::TextOut()在窗口的指定位置处输出文本,函数声明: virtual BOOL TextOut(int x, int y, LPCTST ...
- cacti+CentOS6.5
系统版本:CentOS6.5 软件版本:cacti-0.88f 需要预安装的软件有以下几种,可以通过yum安装全部 yum -y install net-snmp* yum -y install op ...
- HTML5与相关类的扩充
1.getElementsByclassName()方法 <body> <div class='a1'>klkx1</div> <ul id='ul1'> ...
- 安卓4.2用adb 获取屏幕分辨率等信息
在终端输入adb shell dumpsys: 终端会打印出一些service list 用adb shell dumpsys+service名即可查询相应的信息. 屏幕分辨率用adb shell d ...
- sql_id VS hash_value
有没有发现,v$session,v$sql,v$sqlarea,v$sqltext,v$sql_shared_cursor等试图连接的时候经常会用到hash_value,sql_id,但是他们2个之间 ...