jquery的表单验证方法,一个function能不能同时捕捉点击事件和按键事件?能不能再优化下,有代码。
// 该jquery扩展引自 http://www.ghostsf.com/tools/389.html 方法名是作者博客的命名
$.fn.ghostsf_serialize = function () {
var a = this.serializeArray();
var $radio = $('input[type=radio],input[type=checkbox]', this);
var temp = {};
$.each($radio, function () {
if (!temp.hasOwnProperty(this.name)) {
if ($("input[name='" + this.name + "']:checked").length == 0) {
temp[this.name] = "";
a.push({name: this.name, value: ""});
}
}
});
return jQuery.param(a);
};
// 粗制滥作的 表单判空
function verify2(valbtnId,valformId) {
$(valbtnId).attr('disabled',true);
var reg = /^\s*$/g;
$(valformId).keyup('change',function valkeyup(){
//var formdataarray = $(valformId).serialize().split('&'); 未获取到未选中的 checkbox radio
//使用扩展后 ghostsf_serialize() 方法可以获取
var formdataarrayall = $(valformId).ghostsf_serialize().split('&');
var countf = 0;
for(var i = 0; i < formdataarrayall.length; i++) {
var labeltype = formdataarrayall[i].substring(0,formdataarrayall[i].indexOf('='));
if ($('*[name='+labeltype+']').is('select')) {
//如果是下拉框 触发键盘事件 ?
if($('select[name='+labeltype+']').children('options:selected')){
if (!reg.test($('select[name='+labeltype+']:selected').val())) {
countf++;
}
}
}
if ($('*[name='+labeltype+']').is('input')) {
if($('*[name='+labeltype+']').attr('type') == 'text'){
if (!reg.test($('input[name='+labeltype+']').val())) {
countf++;
}
}
if ($('*[name='+labeltype+']').attr('type') == 'checkbox') {
if ( !reg.test($('input[name='+labeltype+']:checked').val()) && $('input[name='+labeltype+']:checked').val()!= undefined) {
countf++;
}
}
if ($('*[name='+labeltype+']').attr('type') == 'radio') {
if (!reg.test($('input[name='+labeltype+']:checked').val()) && $('input[name='+labeltype+']:checked').val()!= undefined) {
countf++;
}
}
}
}
valreturn(countf == i ? false : true,valbtnId);
});
$(valformId).change('click',function valchange(){
var formdataarrayall = $(valformId).ghostsf_serialize().split('&');
var countf = 0;
for(var i = 0; i < formdataarrayall.length; i++) {
var labeltype = formdataarrayall[i].substring(0,formdataarrayall[i].indexOf('='));
if ($('*[name='+labeltype+']').is('select')) {
if($('select[name='+labeltype+']').children('options:selected')){
if (!reg.test($('select[name='+labeltype+']').val())) {
countf++;
}
}
}
if ($('*[name='+labeltype+']').is('input')) {
//alert($('*[name='+labeltype+']').prop('type'));
if($('*[name='+labeltype+']').attr('type') == 'text'){
if (!reg.test($('input[name='+labeltype+']').val())) {
countf++;
}
}
if ($('*[name='+labeltype+']').attr('type') == 'checkbox') {
if ( !reg.test($('input[name='+labeltype+']:checked').val()) && $('input[name='+labeltype+']:checked').val()!=undefined) {
countf++;
}
}
if ($('*[name='+labeltype+']').attr('type') == 'radio') {
if (!reg.test($('input[name='+labeltype+']:checked').val()) && $('input[name='+labeltype+']:checked').val()!=undefined) {
countf++;
}
}
}
}
valreturn(countf == i ? false : true,valbtnId);
});
}
function valreturn(val,valbtnId){
$(valbtnId).attr('disabled',val);
return val;
}
jquery的表单验证方法,一个function能不能同时捕捉点击事件和按键事件?能不能再优化下,有代码。的更多相关文章
- jquery实现表单验证简单实例
/* 描述:基于jquery的表单验证插件. */ (function ($) { $.fn.checkForm = function (options) { var root = this; //将 ...
- ASP.NET MVC Jquery Validate 表单验证的多种方式
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- Jquery Validate 表单验证的多种方式
ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...
- 【锋利的jQuery】表单验证插件踩坑
和前几篇博文提到的一样,由于版本原因,[锋利的jQuery]表单验证插件部分又出现照着敲不出效果的情况. 书中的使用方法: 1. 引入jquery源文件, 2. 引入表单验证插件js文件, 3. 在f ...
- jQuery formValidator表单验证插件
什么是jQuery formValidator? jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人 ...
- jQuery的表单验证
jQuery的表单验证 直接上代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- Jquery 实现表单验证,所有验证通过方可提交
1. [代码]Jquery 实现表单验证,所有验证通过方可提交 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- jQuery Validate 表单验证插件----自定义一个验证方法
一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW 访问密码 f224 二.引入依赖包 <script src="../../scripts/j ...
随机推荐
- [hadoop][会装]hadoop ha模式安装
1.简介 2.X版本后namenode支持了HA特性,使得整个文件系统的可用性更加增强. 2.安装前提 zookeeper集群,zookeeper的安装参考[hadoop][会装]zookeeper安 ...
- Redis 集群使用(2)
Redis包含三种集群策略: 主从复制 哨兵模式 redis cluster 主从复制 在主从复制中,数据分为两类:主数据库(master)和 从数据库(slave).其中主从复制有如下特点: 主数据 ...
- HTML5晃动DeviceMotionEvent事件
关于devicemotion html5提供了几个新的DOM事件来获得设备物理方向及运动的信息,包括:陀螺仪.罗盘及加速计. 第一个DOM事件是**deviceorientation**,其提供设 ...
- VMware Workstation虚拟机Ubuntu中实现与主机共享(复制和粘贴)
VMware Workstation中安装虚拟机Ubuntu后,开始都不能与主机实现共享,即相互之间能实现复制粘贴的功能.要解决问题,只需要安装VMvare tools后然后重启虚拟机Ubuntu即可 ...
- jstorm系列-2:入门
有了基本的概念之后,我们用jstorm来做一点小事情吧 做一个很无聊的事情:给定一个时间戳,输出对应的问候语 规则是:时间戳的十位对应的数字对应不同的时间段,0-2代表早上,3代表中午,4-6代表下午 ...
- C++编译常见错误
error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To di ...
- 微信小程序radio组件 - 如何改变默认样式大小?
今天在写小程序的时候用到radio组件,但是很懊恼并未提供修改radio组件大小属性,第一感觉准备用css width , height 改变radio的大小,但是怎么搞也无法改变. 但是又不愿意搞个 ...
- sql中where和having的区别
“Where” 是一个约束声明,使用Where来约束来自数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. “Having”是一个过滤声明,是在查询返回结果集以后对查询 ...
- python中文ocr方案-pytesseract
pytesseract是google维护的具有学习功能的OCR引擎,3.0以后支持中文识别. 安装: 1. 安装tesseract-ocr组件:记得同步下载简体中文与英文语言包. 2. 安装PIL,需 ...
- KVM-克隆和快照管理
kvm 虚拟机有两部分组成:img镜像文件和xml配置文件 /etc/libvirt/qemu #xml配置文件目录,存在虚拟机所有的详细信息 1.kvm虚拟机克隆 克隆命令 virt-clone - ...