利用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 ...
随机推荐
- System.load()与System.loadLibrary()
Java load 和 loadlibrary方法的区别 1. 相同点: 两个方法都是用来装载dll文件,不论是JNI库文件还是非JNI库文件.本地方法在被调用时都需要通过这两发方法之一将其加载至内 ...
- LSTM长短期记忆神经网络模型简介
LSTM网络也是一种时间递归神经网络,解决RNN的长期依赖关系. RNN模型在训练时会遇到梯度消失或者爆炸的问题,训练时计算和反向传播,梯度倾向于在每一时刻递增或递减,梯度发散到无穷大或者0..... ...
- 用 ASP.NET MVC 实现基于 XMLHttpRequest long polling(长轮询) 的 Comet(转)
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 优点:后端程序编写比较容易. 缺点:请求中有大半是无用,浪费带宽和服务器资源. 实例:适于小型应用. 长轮询:客 ...
- Matlab编辑器背景修改
将下段代码如到C:\Users\Peng Chen\AppData\Roaming\MathWorks\MATLAB\R2016a\matlab.prf 先备份.prf,再替代之前的. #MATLAB ...
- C++之基于排序方法求一组数的中位数
中位数也就是中值: 故需要先对数组进行排序(选择,插入,冒泡排序),然后在找出数组的中值. //求中值 #include<iostream> using namespace std; in ...
- 张奎师弟参与devexpress chartControl绘图--解决了devexpress的chartControl控件不能添加系列的问题
using DevExpress.XtraCharts; using System; using System.Collections.Generic; using System.ComponentM ...
- Netty4.x 源码实战系列(一): 深入理解ServerBootstrap 与 Bootstrap
转载自:https://www.cnblogs.com/itdriver/p/8149913.html 从Java1.4开始, Java引入了non-blocking IO,简称NIO.NIO与传统s ...
- 小论文matlab作图技巧
小论文matlab作图技巧 编辑->复制选项 编辑->图形属性 图中右击->字型 编辑->复制图片,即可. 效果: 宽:5.9高: 7.91
- java 定时执行
Timer和TimerTask CountDownTimer (android)
- idea操作快捷键
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...