如下图,当执行提交操作之前,我们需要对序号,要求完成时间,责任人,措施内容四项进行非空,字符长度及输入内容的类型进行校验.

直接贴样式代码

  1. <div class="wrapper animated fadeInRight">
  2. <form id="form" class="form-horizontal m">
  3. <div class="form-group">
  4. <label class="col-sm-3 control-label ">序号<font class="red"> *</font></label>
  5. <div class="col-sm-8">
  6. <input id="longEventId" col="LongEventId" type="hidden" class="form-control" />
  7. <input id="stepNo" name="stepNoName" col="StepNo" type="number" class="form-control" />
  8. </div>
  9. </div>
  10. <div class="form-group">
  11. <label class="col-sm-3 control-label ">要求完成时间<font class="red"> *</font></label>
  12. <div class="col-sm-8">
  13. <input id="finishTime" name="finishTime" col="FinishTime" type="text" class="time-input form-control"
  14. autocomplete="off" placeholder="要求完成时间" />
  15. </div>
  16. </div>
  17. <div class="form-group">
  18. <label class="col-sm-3 control-label ">责任人<font class="red"> *</font></label>
  19.  
  20. @*<input id="personLiableId" col="PersonLiableId" type="text" class="form-control" />*@
  21. @await Html.PartialAsync("/Areas/SystemManage/Shared/SystemUserIdSelect.cshtml",
  22. new ViewDataDictionary(this.ViewData) { { "Content", "8" }, { "IsMultiple", "false" } })
  23. <input id="userId" name="userIdName" col="PersonLiableId" type="hidden" class="form-control" />
  24. </div>
  25. <div class="form-group">
  26. <label class="col-sm-3 control-label ">改善对策</label>
  27. <div class="col-sm-8">
  28. <textarea id="basicReason" col="BasicReason" class="form-control" style="height:60px"></textarea>
  29. </div>
  30. </div>
  31. <div class="form-group">
  32. <label class="col-sm-3 control-label ">措施内容<font class="red"> *</font></label>
  33. <div class="col-sm-8">
  34. <textarea id="stepContent" name="stepContentName" col="StepContent" class="form-control"
  35. style="height:60px"></textarea>
  36. </div>
  37. </div>
  38. <div class="form-group">
  39. <label class="col-sm-3 control-label ">图片</label>
  40. <div class="col-sm-8">
  41. <div id="stepPic" class="img-box"></div>
  42. </div>
  43. </div>
  44. </form>
  45. </div>

下面为文本输入检测代码

  1. <script type="text/javascript">
  2. $(function () {
  3. laydate.render({
  4. elem: '#finishTime',
  5. type: 'datetime',
  6. format: 'yyyy-MM-dd HH:mm:ss'
  7. });
  8.  
  9. $('#form').validate({
  10. rules: {
  11. stepNoName: {required: true},
  12. finishTime: {required: true},
  13. userId:{required: true},
  14. stepContentName: {required: true, maxlength: 300 }
  15. }
  16. });
  17. });
  18.  
  19. function saveForm(index) {
  20. var userI = $("#userId").val();
  21. if (userI == "" || userI == null || userI == undefined) {
  22. ys.msgError("请选择责任人!");
  23. return;
  24. }
  25.  
  26. if ($('#form').validate().form()) {
  27. var postData = $('#form').getWebControls({Id: id });
  28. postData.StepPic = $("#stepPic").imageUpload("getImageUrl");
  29. ys.ajax({
  30. url: '@Url.Content("~/LongEventManage/LongMeasuresManage/SaveFormJson")',
  31. type: 'post',
  32. data: postData,
  33. success: function (obj) {
  34. if (obj.Tag == 1) {
  35. ys.msgSuccess(obj.Message);
  36. parent.searchGrid();
  37. parent.layer.close(index);
  38. }else {
  39. ys.msgError(obj.Message);
  40. }
  41. }
  42. });
  43. }
  44. }
  45.  
  46. </script>

先看下当点击提交的时候的效果图:

当我们点击提交时,序号,要求完成时间,措施内容都提示是必填字段.

因此当提交时,这个表单验证是不会通过的,也就不会执行ajax请求调用提交方法.

  1. if ($('#form').validate().form()) {
  2. var postData = $('#form').getWebControls({Id: id });
  3. postData.StepPic = $("#stepPic").imageUpload("getImageUrl");
  4. ys.ajax({
  5. url: '@Url.Content("~/LongEventManage/LongMeasuresManage/SaveFormJson")',
  6. type: 'post',
  7. data: postData,
  8. success: function (obj) {
  9. if (obj.Tag == 1) {
  10. ys.msgSuccess(obj.Message);
  11. parent.searchGrid();
  12. parent.layer.close(index);
  13. }else {
  14. ys.msgError(obj.Message);
  15. }
  16. }
  17. });
  18. }
  19. }

咱们接着往下实验,如果此时我们输入了措施内容,但是字符大于规定的300长度时,

  1. stepContentName: {required: true, maxlength: 300 }

关于rules的key,其实指向的<input />中的name,之前我选择的是id,但是却没有生效,必须指向他的name名称.

细心的小伙伴,有没有发现,我的完成时间,为什么没有用name,而是还用的id名称?

  1. <input id="stepNo" name="stepNoName" col="StepNo" type="number" class="form-control" />
  1. <input id="finishTime" name="finishTimeName" col="FinishTime" type="text" class="time-input form-control" autocomplete="off" placeholder="要求完成时间" />
  1. $('#form').validate({
  2. rules: {
  3. stepNoName: {required: true},
  4. finishTime: {required: true},
  5. userId:{required: true},
  6. stepContentName: {required: true, maxlength: 300 }
  7. }
  8. });
  9. });

    因为上面的<script>代码中,我使用了layUI框架对时间选择器的修饰导致name没有生效.
  1. laydate.render({
  2. elem: '#finishTime',
  3. type: 'datetime',
  4. format: 'yyyy-MM-dd HH:mm:ss'
  5. });

    其实我们从F12也可以看出,完成时间input框他的name也是finishTime.所以还是用的name作为Key.
  1.  
  1.  

JS form表单数据校验及失效情况下的解决方案的更多相关文章

  1. js form表单的校验

    if(!$("#form").validate().form()){ return false;} <元素 class="required">< ...

  2. 表单数据验证方法(一)—— 使用validate.js实现表单数据验证

    摘要:使用validate.js在前端实现表单数据提交前的验证 好久没写博客了,真的是罪过,以后不能这样了,只学习不思考,学的都是白搭,希望在博客园能记录下自己学习的点滴,虽然记录的都是些浅显的技术, ...

  3. SpringBoot表单数据校验

    Springboot中使用了Hibernate-validate作为默认表单数据校验框架 在实体类上的具体字段添加注解 public class User { @NotBlank private St ...

  4. FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置

    安装 pip install fastapi[all] pip install unicorn 基本使用(不能同时支持,get, post方法等要分开写) from fastapi import Fa ...

  5. [JavaScript] 实现简单的表单数据校验功能

    实现表单数据校验功能 因为项目用的UI库功能太少,表单不具备校验功能,所以自己写了一个,只有一个文件. 使用 import { required, email, useValidate } from ...

  6. mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法

    mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...

  7. JS form表单提交的方法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...

  8. JS form 表单收集 数据 formSerialize

    做后台系统的时候通常会用到form表单来做数据采集:每次一个字段一个字段的去收集就会很麻烦,网站也有form.js插件可以进行表单收集,并封装成一个对象,通过ajax方法传到后台:现在介绍一种直觉采集 ...

  9. js form 表单属性学习

    一.<form></form>标签      引用借鉴:http://www.cnblogs.com/fizx/p/6703370.html form标签的属性规定了当前网页上 ...

  10. js——form表单验证

    用js实现一个简易的表单验证 效果: 代码: <html> <head> <title>js校验form表单</title> <meta char ...

随机推荐

  1. MAC 安装homebrew最好的办法哦~~

    Command+Shift+. 可以显示隐藏文件.文件夹,再按一次,恢复隐藏:finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹.   常用指令如下 cd ~ 进入根 ...

  2. HelloWorld的常见问题与Notepad++使用-程序注释与Hello World说明

    HelloWorld的常见问题与Notepad++使用 编译和运行是两回事 编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们 所写的程 ...

  3. Idea的jdbc中的查询与增删该

    在上一篇的折磨中 终于写好了代码 来总结一下其中的奥妙 (相同部分:)1.有mysql并且与主机建立连接 2.有jar包并且复制到自己创建的libs文件下,右键add 3.需要写main方法 4.需要 ...

  4. Java最全八股文(2023最新整理)

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  5. 2023 年 dotnet 仓库社区年度调查已经开始

    准备好今年对 dotnet 指手画脚了吗,平常在群里我忍气吞声,今天我必须重拳出击,快来参与吧. 我直接一个参的加 .NET 是一个跨平台的开发框架,支持多种语言和应用场景,如 C#.F#.VB.NE ...

  6. esp32 开发资料

    开发工具下载 https://dl.espressif.cn/dl/esp-idf/ 设置芯片型号等 Windows 平台工具链的标准设置 - ESP32-C3 - - ESP-IDF 编程指南 la ...

  7. 加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10)

    不用说火爆一时,全网热议的Web3.0区块链技术,也不必说诸如微信支付.支付宝支付等人们几乎每天都要使用的线上支付业务,单是一个简简单单的注册/登录功能,也和加密技术脱不了干系,本次我们耙梳各种经典的 ...

  8. 网关与网络地址(网络号)以及IP地址、广播地址

    转载新浪博客: http://blog.sina.com.cn/s/blog_406127500101i8bp.html

  9. layui 手机端时间不能滑动问题

    // 滑动问题 .laydate-time-list ol{overflow-x: hidden !important ;overflow-y: auto !important ;} //去除秒的显示 ...

  10. 【译】.NET 7 中的性能改进(七)

    原文 | Stephen Toub 翻译 | 郑子铭 Arm64 在.NET 7中,大量的努力用于使Arm64的代码生成与x64的代码生成一样好或更好.我已经讨论了一些与架构无关的PR,还有一些是专门 ...