jquery验证表单中的单选与多选实例


Posted in Javascript onAugust 18, 2013

例如下的选项中,我们要求带*的是必选的,看图:

jquery验证表单中的单选与多选实例

看到上面网页没?业务办理渠道下的多选必须要选中一个,怎么办?如果一个都没有选中,在表单提交的时候我们就要去提示错误信息,,,。大家都知道jquery验证input是非常简单的,却很少要去验证多选或单选,而且还是一组组的验证,是分了组的,并非页面上的所有!!怎么办呢?

不用jquery用其他的,可以吗?可以!!!不过我们还是用jquery来实它。

先来看一下,没有选中的效果,我们应该是这样:

jquery验证表单中的单选与多选实例

假设选中了一个,提示信息马上消失,如下图:

jquery验证表单中的单选与多选实例

其实这个可以用jsmap来实现 也就是用js模拟map来做。以下的代码是公用的,以后遇到这种情况,直接把下面js代码拷入,做一下配置就可以实现了。

用下面的代码,你必须要引入jquery验证的js

代码如下:

首先,把下面的js代码放入你的js文件里,或是页面中:

/**
* 数组存储器 主要是为了方便juery验证chckbox而设计                   数组存储器,配置对象,为验证checkbox 和单选。
* 私有变量区定义数组
* 然后把每一个数组配置到setting里面,这样这个数组就存在于存储器中
* 在应用的时候用数组名即可方便地操作和得到不同的数组。
* 当你需要某个数组的时候,如果你只操作一个数组那这个方法是多于的,但如果你操作多个数组或只有数组名的情况下,这个存储器就很有用。
* @author 电子科大科园 庄濮向
* @return 数组存储器对象
*/
var MapArr = (function () {
    var BHC = [], BCC = [], BQC = [], IC = [];
    var BAC = [];
    var BUC = [];
    var setting = [
            {
                key: "BHC",
                value: BHC
            },
            {
                key: "BAC",
                value: BAC
            }, { key: "BUC", value: BUC }, { key: "BCC", value: BCC }, { key: "BQC", value: BQC }, {key:"IC",value:IC}
            ];
    return {
        //通过数组名得到数组织
        getArr: function (arr_name) {
            for (var setting_i = 0, setting_len = setting.length; setting_i < setting_len; setting_i++) {
                if (setting[setting_i].key == arr_name) {
                    return setting[setting_i].value;
                }
            }
        },
        //删除指定数组中的某一个元素
        delArr: function (arr_name, elementValue) {
            for (var delArr_i = 0, delArr_len = setting.length; delArr_i < delArr_len; delArr_i++) {
                if (setting[delArr_i].key == arr_name) {
                    for (var arr_i = 0, arr_len = setting[delArr_i].value.length; arr_i < arr_len; arr_i++) {
                        if (setting[delArr_i].value[arr_i] == elementValue) {
                            setting[delArr_i].value.splice(arr_i, 1);
                        }
                    }
                }
            }
        },
        //向某一个数组中添加一个元素
        pushArr: function (arr_name, elementValue) {
            for (var pushArr_i = 0, pushArr_len = setting.length; pushArr_i < pushArr_len; pushArr_i++) {
                if (setting[pushArr_i].key == arr_name) {
                    setting[pushArr_i].value.push(elementValue);
                }
            }
        }
    }
} ());

/**
*复选框或单选的点击事件 应用到了上面的map
* @author 电子科大科园 庄濮向
* @return 数组存储器对象
*/
function chk(event, arrName) {
    if (event.checked == true) {
        //向名为arrName的数组中添加一个元素
        MapArr.pushArr(arrName, event.value);
    } else {
        //在名为arrName的数组中去除一个元素
        MapArr.delArr(arrName, event.value);
    }
    var checkInput = document.getElementById(arrName);
    if (MapArr.getArr(arrName)[0] == 'undefined' || MapArr.getArr(arrName)[0] == null) {
        checkInput.value = null; //把这个数组的值给他。 这样的话,就起到了验证的效果
    } else {
        checkInput.value = MapArr.getArr(arrName)[0];
    }
    //如何让提示信息在加入值过后就消失掉?
    if (!$("#form1").valid()) return false; //只是为了让这一章展开的消失,所以千万不要去运行提交的那个check,会影响章节的显示
}

二:在你需要验证的多选或单选的那一组标题后面加入一个input:
<input id="BAC" name="BAC" type="text"  style="width:0;height:0;border:0" class="required" />

三:在你的checkbox或是radio标签内加入事件:
onclick="chk(this,'BAC')"

四:一致性:在"二"中的那个input是用来作提示信息的,所以你的id 和name 一定要有,且名字要一致,如上就是:id="BAC", name="BAC" ,input写好过后,在加入事件的时候,你第二个参数要与input的id同名,也要是BAC;

五:配置,面子做好了,就是核心的配置了,这个配置在哪儿配呢,就是叫你引入的我上面的js代码中。onclick="chk(this,'BAC')",是给每一个复选或单选加事件,同时还有一个意思,说明要把这个复选应用到BAC这个数组中,所以,我们去setting中配置一个数组。

在MapArr中加入一个数组:

var BAC=[];

在MapArr的setting中加入一个对象:
{


key:"BAC",


value:BAC
  }

千万要保证一致性,不然不会成功。

重点:input的id同onclick的第二个参数一致 MapArr中加入的数组变量的变量名与input的id一致,setting中的key的值同input的id一致 setting 中的value的值是你配置的这个数组。好啦,现在就可以实现验证了。

Javascript 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
Sep 06 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
快速使用Bootstrap搭建传送带
May 06 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
浅谈react-router@4.0 使用方法和源码分析
Jun 04 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
Sep 01 Javascript
JavaScript实现刮刮乐效果
Nov 01 Javascript
JS+CSS实现一个气泡提示框
Aug 18 #Javascript
JS中for循序中延迟加载动态效果的具体实现
Aug 18 #Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 #Javascript
JS通过相同的name进行表格求和代码
Aug 18 #Javascript
复选框全选与全不选操作实现思路
Aug 18 #Javascript
将文本输入框内容加入表中的js代码
Aug 18 #Javascript
js css后面所带参数含义介绍
Aug 18 #Javascript
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
python对json的相关操作实例详解
2017/01/04 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python如何使用腾讯云发送短信
2020/09/17 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
销售经理工作职责范文
2013/12/03 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
pycharm代码删除恢复的方法
2021/06/26 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js