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 相关文章推荐
javascript克隆对象深度介绍
Nov 20 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
Aug 13 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
Aug 21 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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中文转拼音的实现代码
2014/02/11 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
个人评语大全
2014/05/04 职场文书
关于美容院的活动方案
2014/08/14 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
车辆年检委托书范本
2014/10/14 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS