JS form表单数据校验及失效情况下的解决方案
如下图,当执行提交操作之前,我们需要对序号,要求完成时间,责任人,措施内容四项进行非空,字符长度及输入内容的类型进行校验.
直接贴样式代码
<div class="wrapper animated fadeInRight">
<form id="form" class="form-horizontal m">
<div class="form-group">
<label class="col-sm-3 control-label ">序号<font class="red"> *</font></label>
<div class="col-sm-8">
<input id="longEventId" col="LongEventId" type="hidden" class="form-control" />
<input id="stepNo" name="stepNoName" col="StepNo" type="number" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label ">要求完成时间<font class="red"> *</font></label>
<div class="col-sm-8">
<input id="finishTime" name="finishTime" col="FinishTime" type="text" class="time-input form-control"
autocomplete="off" placeholder="要求完成时间" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label ">责任人<font class="red"> *</font></label> @*<input id="personLiableId" col="PersonLiableId" type="text" class="form-control" />*@
@await Html.PartialAsync("/Areas/SystemManage/Shared/SystemUserIdSelect.cshtml",
new ViewDataDictionary(this.ViewData) { { "Content", "8" }, { "IsMultiple", "false" } })
<input id="userId" name="userIdName" col="PersonLiableId" type="hidden" class="form-control" />
</div>
<div class="form-group">
<label class="col-sm-3 control-label ">改善对策</label>
<div class="col-sm-8">
<textarea id="basicReason" col="BasicReason" class="form-control" style="height:60px"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label ">措施内容<font class="red"> *</font></label>
<div class="col-sm-8">
<textarea id="stepContent" name="stepContentName" col="StepContent" class="form-control"
style="height:60px"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label ">图片</label>
<div class="col-sm-8">
<div id="stepPic" class="img-box"></div>
</div>
</div>
</form>
</div>
下面为文本输入检测代码
<script type="text/javascript">
$(function () {
laydate.render({
elem: '#finishTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm:ss'
}); $('#form').validate({
rules: {
stepNoName: {required: true},
finishTime: {required: true},
userId:{required: true},
stepContentName: {required: true, maxlength: 300 }
}
});
}); function saveForm(index) {
var userI = $("#userId").val();
if (userI == "" || userI == null || userI == undefined) {
ys.msgError("请选择责任人!");
return;
} if ($('#form').validate().form()) {
var postData = $('#form').getWebControls({Id: id });
postData.StepPic = $("#stepPic").imageUpload("getImageUrl");
ys.ajax({
url: '@Url.Content("~/LongEventManage/LongMeasuresManage/SaveFormJson")',
type: 'post',
data: postData,
success: function (obj) {
if (obj.Tag == 1) {
ys.msgSuccess(obj.Message);
parent.searchGrid();
parent.layer.close(index);
}else {
ys.msgError(obj.Message);
}
}
});
}
} </script>
先看下当点击提交的时候的效果图:
当我们点击提交时,序号,要求完成时间,措施内容都提示是必填字段.
因此当提交时,这个表单验证是不会通过的,也就不会执行ajax请求调用提交方法.
if ($('#form').validate().form()) {
var postData = $('#form').getWebControls({Id: id });
postData.StepPic = $("#stepPic").imageUpload("getImageUrl");
ys.ajax({
url: '@Url.Content("~/LongEventManage/LongMeasuresManage/SaveFormJson")',
type: 'post',
data: postData,
success: function (obj) {
if (obj.Tag == 1) {
ys.msgSuccess(obj.Message);
parent.searchGrid();
parent.layer.close(index);
}else {
ys.msgError(obj.Message);
}
}
});
}
}
咱们接着往下实验,如果此时我们输入了措施内容,但是字符大于规定的300长度时,
stepContentName: {required: true, maxlength: 300 }
关于rules的key,其实指向的<input />中的name,之前我选择的是id,但是却没有生效,必须指向他的name名称.
细心的小伙伴,有没有发现,我的完成时间,为什么没有用name,而是还用的id名称?
<input id="stepNo" name="stepNoName" col="StepNo" type="number" class="form-control" />
<input id="finishTime" name="finishTimeName" col="FinishTime" type="text" class="time-input form-control" autocomplete="off" placeholder="要求完成时间" />
$('#form').validate({
rules: {
stepNoName: {required: true},
finishTime: {required: true},
userId:{required: true},
stepContentName: {required: true, maxlength: 300 }
}
});
});
因为上面的<script>代码中,我使用了layUI框架对时间选择器的修饰导致name没有生效.
laydate.render({
elem: '#finishTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm:ss'
});
其实我们从F12也可以看出,完成时间input框他的name也是finishTime.所以还是用的name作为Key.
JS form表单数据校验及失效情况下的解决方案的更多相关文章
- js form表单的校验
if(!$("#form").validate().form()){ return false;} <元素 class="required">< ...
- 表单数据验证方法(一)—— 使用validate.js实现表单数据验证
摘要:使用validate.js在前端实现表单数据提交前的验证 好久没写博客了,真的是罪过,以后不能这样了,只学习不思考,学的都是白搭,希望在博客园能记录下自己学习的点滴,虽然记录的都是些浅显的技术, ...
- SpringBoot表单数据校验
Springboot中使用了Hibernate-validate作为默认表单数据校验框架 在实体类上的具体字段添加注解 public class User { @NotBlank private St ...
- FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置
安装 pip install fastapi[all] pip install unicorn 基本使用(不能同时支持,get, post方法等要分开写) from fastapi import Fa ...
- [JavaScript] 实现简单的表单数据校验功能
实现表单数据校验功能 因为项目用的UI库功能太少,表单不具备校验功能,所以自己写了一个,只有一个文件. 使用 import { required, email, useValidate } from ...
- mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...
- JS form表单提交的方法
1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...
- JS form 表单收集 数据 formSerialize
做后台系统的时候通常会用到form表单来做数据采集:每次一个字段一个字段的去收集就会很麻烦,网站也有form.js插件可以进行表单收集,并封装成一个对象,通过ajax方法传到后台:现在介绍一种直觉采集 ...
- js form 表单属性学习
一.<form></form>标签 引用借鉴:http://www.cnblogs.com/fizx/p/6703370.html form标签的属性规定了当前网页上 ...
- js——form表单验证
用js实现一个简易的表单验证 效果: 代码: <html> <head> <title>js校验form表单</title> <meta char ...
随机推荐
- 洛谷 P2440木材加工 题解
这是一道二分答案算法题,洛谷标签中的贪心等完全用不到. 这道题的数据范围较大,所以保险起见,整型的数据我们都开成longlong 题意很好理解,这里就不做过多的分析了,直接看代码,后面有注释: #in ...
- 数据结构-详解优先队列的二叉堆(最大堆)原理、实现和应用-C和Python
一.堆的基础 1.1 优先队列和堆 优先队列(Priority Queue):特殊的"队列",取出元素顺序是按元素优先权(关键字)大小,而非元素进入队列的先后顺序. 若采用数组或链 ...
- 【SW】利用3D打印机打印 PCB 钢网的方法
每完成一个小作品以后,PCB打样回来,手工焊接着费时费力,定制钢网又未免太过浪费,想到自己有一台 FDM 3D 打印机,是不是可以通过 3D 打印机打印 "钢网" 呢? 在网上也翻 ...
- 新版Bing 搜索后台的.NET 技术栈
微软在今天在Redmond 线下举办媒体一场活动,发布了新版的微软必应,在桌面上推出了测试版,移动版也即将推出.微软首席执行官纳德拉称Al-powered搜索为公司自云15年以来最大的事情. 2023 ...
- 100 行 shell 写个 Docker
作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker. 一.目的 在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup.Na ...
- JavaScript 、三个点、 ...、点点点 是什么语法
笔者在学习ts函数式的时候见到这样的写法,这个语法是es6的扩展运算符,可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开:还可以在构造字面量对象时, 将对象表达式按key-va ...
- websocket-sharp 实现websocket
第一步,使用VS创建一个应用程序 第二步,添加引用 websocket-sharp DLL文件,或者NuGet程序包中添加 第三部,创建Laputa 类 using WebSocketSharp; u ...
- 学习Java Day6
今天学习了Java的输出,与C/C++不同,Java的输出形式有很多,有许多printf标识符表示的含义各不相同,而且数量众多,其中Java还有表示日期的转换符.
- session实现servlet数据共享
为了满足老师考试要求,要实现数据共享,要实现顾客登录的功能,登录后进行增删改查要对该顾客进行操作,所以需要将该顾客的一些信息共享给其他操作,找了一些资料,来通过session实现: 首先,设置: Ht ...
- Hystrix容错监控机制
六:Hystrix容错监控机制 什么是微服务的容错机制 提前预设解决方案.,系统自主调节,遇到问题即时处理 什么是Hystrix Netfix 设计原则: 服务隔离机制 服务降级 熔断机制 提供实时的 ...