当前位置: 首页 > news >正文

jQuery.form.js 详细用法_维护老项目使用

概述

jquery-3.3.1.min.js : http://jquery.com/download

jquery.form.min.js :http://malsup.com/jquery/form/#tab7

jquery form 是一个表单异步提交的插件,可以很容易提交表单,设置表单提交的参数,并在表单提交前对表单数据进行校验和处理和表单提交后的函数调用。

表单代码:

<form id="form1" method="get" action="/day09/jqueryFormServlet">姓名:<input ><br>年龄:<input ><br>地址:<input ><br>兴趣:<p>h1:<input type="checkbox" >h2:<input type="checkbox" >h3:<input type="checkbox" >h4:<input type="checkbox" ></p>性别:男:<input type="radio" ><br>女:<input type="radio" ><br><input type="submit" value="submit1" id="sub1"><input type="submit" value="submit2" id="sub2"><div id="p1">p</div>
</form>

这个插件有两个主要方法:

ajaxForm() 和 ajaxSubmit(), 它们集合了从控制表单元素到决定如何管理提交进程的功能;

他们都可以接受 0 个或一个参数,参数可以为一个函数或者一个 JS 对象,类似 json 格式;

ajaxForm()不能提交表单,只是为表单提交做准备:

①:传入函数

$("#form1").submit(function () {$('#form1').ajaxForm(function () {alert("提交成功2")})
})
但是虽然我看了很多博客都是这样写,我实际代码运行之后发现,“提交成功2”并没有打印,也就是函数没有进去,

而且提交后,页面会跳转到 action 的地址,也就是说,这个方法不能实现表单的异步提交,只是为表单提交做准备,但传入一个函数的方式不适合这个方法,因为没有进去,不知道是不是我写的有问题。但是如果传入一个 option 是对象,就能生效。

var options = {url: "/day09/jqueryFormServlet", //提交地址:默认是form的action,如果申明,则会覆盖type: "post",   //默认是form的method(get or post),如果申明,则会覆盖beforeSubmit: beforeCheck, //提交前的回调函数success: successfun,  //提交成功后的回调函数target: "#output",  //把服务器返回的内容放入id为output的元素中dataType: "json", //html(默认), xml, script, json...接受服务端返回的类型clearForm: true,  //成功提交后,是否清除所有表单元素的值resetForm: true,  //成功提交后,是否重置所有表单元素的值timeout: 3000     //限制请求的时间,当请求大于3秒后,跳出请求
};

②:传入一个 js 对象

$('#form1').ajaxForm(options)

ajaxSubmit()方法:实现表单的异步提交

$("#form1").submit(function () {$('#form1').ajaxSubmit(function () {alert("提交成功2")})return false;
})

这里必须返回 false,不然表单会提交两次,因为异步提交一次,默认提交一次;

$('#form1').ajaxSubmit(options)

但如果传入 options 对象则只会提交一次,目前我不知道什么原理。

//表单提交前,数据校验
/** formData:表单元素数组对象,数组里面每一个元素都是一个<input>元素,可以通过.name、.value的方式访问元素* 提交表单时,Form插件会以Ajax方式自动提交这些数据,格式如:[{name:user,value:val },{name:pwd,value:pwd}]* form: jQuery对象,封装了表单的元素* options: options对象* */
function beforeCheck(formData, form, options) {//利用formData校验//$.param(formData) 可以和formSerialize方法一样,实现表单元素的序列化var queryString = $.param(formData);$("#p1").html(queryString + "<br>")for (var i = 0; i < formData.length; i++) {//打印每一个元素的name属性和value值//alert(formData[i].name + "  " + formData[i].value)}//利用form校验var formDom = form[0];//formDom是jQuery表单对象,感觉类似数组,可以通过下标访问元素//比如:formDom[0].targetName 表示元素标签名,INPUTvar name = formDom["name"].value;//这里寻找name为name或者id为name的元素的值var age = formDom["age"].value;alert(name+"  "+age)if (!name || !age) {alert("name age 不能为空")}//利用fieldValue校验//返回选择元素的value值,是一个数组var name = $("input[name='name']").fieldValue();var hobby = $("input[name='hobby']").fieldValue();if (!name[0] || !hobby[0]) {alert("必须填姓名和选择兴趣")}//把表单的元素序列化,:name=姓名&age=年龄;以字符串的方式拼接所有表单元素var formSerializeStr = $("#form1").formSerialize();alert(formSerializeStr)//序列化某些表单元素 $("#form1 .ss")通过选择器选择某些元素//这里就是选择表单里面,有specialFields样式的元素;但是这里我用属性选择器没有生效,比如$("#form1[name='name']")var formSerializeStr = $("#form1 .specialFields").fieldSerialize();alert(formSerializeStr)return true;//如果return false,则校验不通过,表单不会提交
}function successfun(data, status) {//data是提交成功后的返回数据,status是提交结果 比如success//返回数据的类型是通过options对象里面的dataType定义的,比如json、xml,默认是html//这里data.success是因为我后天返回的json数据的一个属性 String jsonText = "{'success':'提交成功'}";alert(data.success + "  " + status)
}

一、jQuery.Form.js 配置选项 options

选项说明
url表单提交数据的地址
typeform 提交的方式 (method:post/get)
target服务器返回的响应数据显示在元素 (Id) 号
beforeSerialize: function($form, options)表单数据被序列化之前执行的回调函数,如果在内部 return false 将终止序列化和提交。
beforeSubmit: function(arr, $form, options)表单数据被序列化成 arr 数组,并且在提交前触发的回调函数。
error提交失败执行的回调函数
success提交成功后执行的回调函数
data除了表单数据外,还需要额外提交到服务器的数据
iframe如果有 <input type="file"> 是否应该使用 iframe 来上传文件 (对旧版本浏览器而言)
iframeSrc为 <iframe> 元素设定 src 属性值
iframeTarget如果你想用自己的 iframe 来上传文件,可以将 Id 传给这个属性
dataType期望服务器返回数据类型
clearForm提交成功后是否清空表单中的字段值
restForm提交成功后是否重置表单中的字段值,即恢复到页面加载时的状态
timeout设置请求时间,超过该时间后,自动退出请求,单位 (毫秒)
forceSync 
semantic 
uploadProgress 

二、可操作函数

函数说明
ajaxForm提交表单 与 ajaxSubmit 的区别在于是否触发浏览器的提交。
ajaxSubmit提交表单
formSerialize序列化表单
fieldSerialize序列化字段
fieldValue返回某个 input 的字段值
resetForm重置表单为打开页时的状态
clearForm清空表单的所有值
clearFields清空某个字段值

相关文章:

jQuery.form.js 详细用法_维护老项目使用

概述 jquery-3.3.1.min.js &#xff1a; http://jquery.com/download jquery.form.min.js &#xff1a;http://malsup.com/jquery/form/#tab7 jquery form 是一个表单异步提交的插件&#xff0c;可以很容易提交表单&#xff0c;设置表单提交的参数&#xff0c;并在表单提交前…...

【Java】关于你不知道的Java大整数运算之BigInteger类超级好用!!!

目录 一、BigInteger类简单介绍 二、BigInteger构造方式 &#xff08;1&#xff09;构造方式 &#xff08;2&#xff09;输入方式 三、BigInteger常见的成员方法 &#xff08;1&#xff09;方法介绍 &#xff08;2&#xff09;方法使用演示 1.加减乘除余 2.比较 3.绝…...

运维是不是没有出路了?

瑞典马工的​​《是时候让运维集体下岗了》一出&#xff0c;就让运维人为之一颤&#xff0c;​人人自危。文章开篇就提到&#xff1a;​​明人不说暗话&#xff0c;在云原生和DevOps成熟的今天&#xff0c;运维作为一个岗位和团队已经完成了历史任务&#xff0c;应该退出舞台了…...

【C++笔试强训】第七天

选择题 解析&#xff1a;内联函数&#xff08;inline&#xff09;一般用于代码较少&#xff0c;代码块里面没有递归且频繁调用的函数&#xff0c;是一种以空间换时间&#xff08;不是指内存&#xff0c;而是指令变多编译出来的可执行程序会变大&#xff09;的做法。内联函数在预…...

mysql binlog 一直追加写,磁盘满了怎么办?

文章目录 mysql binlog 清理策略1、设置binlog最大的文件数和文件大小2、定时清理过期binlog文件3、手动清理binlog文件4、禁用或启用binlogmysql binlog用于记录mysql数据库所有变更(数据库的DDL、DML操作)包括用户执行的语句,以及底层引擎所执行的操作的二进制日志,主要用…...

缓存穿透、缓存雪崩、缓存击穿解决方案

什么是缓存 缓存就是数据交换的缓冲区&#xff08;称作Cache&#xff09;,是存贮数据的临时地方&#xff0c;一般读写性能较高。 添加 redis 缓存 给店铺类型查询业务添加缓存 需求&#xff1a;添加ShopTypeController中的queryTypeList方法&#xff0c;添加查询缓存 缓存更新…...

web + servlet + jdbc mysql 实现简单的表单管理界面

目录数据库创建数据库连接servlet创建,这里注意一下我的数据库我自己改了一下名字lhx网页html运行文件目录展示首先我们准备好开发使用的工具以及配置 idea2020 tomcat8.5 创建javaweb参考idea编译Tomcat详细步骤 IDEA通过JDBC连接数据库请参考jdbc连接数据库 需要登陆注册界面…...

Maven 国内镜像仓库

镜像仓库目标 当我们未定义任何远程仓库时&#xff0c;使用 Maven 更新依赖时&#xff0c;其会去默认远程仓库中拉取&#xff0c;默认远程仓库 是国外地址&#xff0c;所以在国内访问特别慢&#xff0c;想提升访问速度&#xff0c;需要将国外地址换成国内地址 更换仓库地址的…...

day21 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

二叉搜索树的最小绝对差 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;是一种特殊的二叉树&#xff0c;它的每个节点都满足以下条件&#xff1a; 左子树上所有节点的值均小于该节点的值&#xff1b;右子树上所有节点的值均大于该节点的值&#…...

大学计算机(软件类)专业推荐竞赛 / 证书 官网及赛事相关信息整理

大学计算机专业(软件)推荐竞赛 / 证书 官网及赛事相关信息 一、算法类(丰富简历)&#xff1a; 1、ACM国际大学生程序设计竞赛&#xff1a; 官网&#xff1a;https://icpc.global/ 国内&#xff1a;http://icpc.pku.edu.cn/index.htm 报名方式&#xff1a;区域预赛一般每年9-1…...

Metasploit入门到高级【第九章】

预计更新第一章&#xff1a;Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章&#xff1a;Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章&#xff1a;Metasploit 基础 Metasploit 的基本概念Met…...

JDK之8后: 协程? 虚拟线程!!!

特性官方文档: https://openjdk.org/jeps/436 Java协程 近三十年来&#xff0c;Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行&#xff0c;并且由于 Java 是多线程的&#xff0c;因此多个执行线程同时发生。线程是Java的并发…...

体验 jeecg

体验 jeecg官网地址事前准备安装升级 node 和 npm 版本验证安装安装 pnpm clidocker 启动 MySQLdocker 启动 redisgit clone 项目启动JAVA项目 jeecg-boot启动Vue3项目 jeecgboot-vue3官网地址 http://www.jeecg.com/ 事前准备 (1) 为了回避Could not find artifact com.mic…...

投稿指南【NO.13】计算机学会CCF推荐期刊和会议分享(人工智能)

前 言国内高等院校研究生及博士毕业条件需要发表高水平期刊或者顶会&#xff08;清北上交等重点学校毕业要求为至少发一篇顶会&#xff09;&#xff0c;很多同学私信问到一级学会的会议论文怎么找、是什么&#xff0c;比如前段时间放榜的CVPR论文就是人工智能领域的顶会国际会议…...

一份sql笔试

1、 select substr(time,1,10),count(order_id),count(distinct passenger_id) from order where substr(time,1,7)2023-08 group by substr(time,1,10) order by substr(time,1,10);2、 select city_id from (select * from order where substr(time,1,7) 2022-08) t1 left j…...

交换瓶子

交换瓶子 贡献者&#xff1a;programmer_ada 有N个瓶子&#xff0c;编号 1 ~ N&#xff0c;放在架子上。 比如有5个瓶子&#xff1a; 2 1 3 5 4 要求每次拿起2个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的序号为&#xff1a; 1 2 3 4 5 对于这么…...

二、Docker安装、启动、卸载、示例

Docker 支持 CentOS 6 及以后的版本&#xff0c;可以直接通过yum进行安装&#xff1a; 使用流程&#xff1a;启动主机 – 启动Docker服务 – 下载容器镜像 – 启动镜像得一个到容器 – 进入容器使用我们想要的程序 主机一般是Linux、Utuban 以下主机系统以CentOS7为例子&#…...

开心档之C++ STL 教程

C STL 教程 目录 C STL 教程 实例 在前面的章节中&#xff0c;我们已经学习了 C 模板的概念。C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了通用的模板类和函数&#xff0c;这些模板类和函数可以实现多种流行和常用的算法和数据结构…...

Thread 类的基本用法

文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)

文章目录1.病毒溯源问题&#xff1a;求树的最长链长度和字典序最小的最长链思路&#xff1a;2.龙龙送外卖思路&#xff1a;3.红色警报&#xff1a;思路&#xff1a;1.病毒溯源 问题&#xff1a;求树的最长链长度和字典序最小的最长链 思路&#xff1a; 一开始用 bfs 做的 &a…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

Yii2项目自动向GitLab上报Bug

Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码&#xff0c;使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...