bootstrapValidator验证最大值最小值范围限制

article/2025/10/6 21:26:29

录入该值的最大值与最小值 bootstrapValidator进行效验,使最小值不可大于最大值,最大值不可小于最小值

刚开始的验证还是没事的,符合正常的验证规则
在这里插入图片描述
再把不符合规则的最大值改变,现在最小值已经比最大值小了,但是最大值没通过验证,说明在最小值框的内容改变时才会进行最小值的验证,最大值的框内容没改变,不会进行验证
在这里插入图片描述

一种办法是,在callback中加上该方法,对这个字段从新进行效验,但是两个需要校验的都需要加,就造成了无限循环,

//从新验证该字段
$('#form').data('bootstrapValidator').revalidateField('nMax');

可以自己获取两个字段的值,手动进行比较,当符合验证规则,手动修改该字段的验证状态

$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );

两个值框进行对比

	$("#form").bootstrapValidator({message: 'This value is not valid',feedbackIcons: {valid: 'glyphicon glyphicon-ok',invalid: 'glyphicon glyphicon-remove',validating: 'glyphicon glyphicon-refresh'},fields: {nMin:{validators:{notEmpty:{message:'最小值不能为空'},regexp: {regexp: /^[0-9._]+$/,message: '请输入有效的值'},callback: {message: '最小值不可大于最大值',callback: function(value, validator) {if(value != ''){var nMax = $("#form").data("bootstrapValidator").getFieldElements('nMax');if(nMax.val()!='' && Number(nMax.val()) < Number(value)){return false;}else if(nMax.val()!='' && Number(nMax.val()) > Number(value)){//从新验证该字段//$('#form').data('bootstrapValidator').revalidateField('nMax');//当符合规则手动修改该字段的验证状态/* 因为上面方法两个字段相互验证 ,会造成死循环,所以在两个字段比较之后,并且符合验证规则,就手动修改该字段的验证状态 */$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );return true;}else if(nMax.val()==''){return true;}else{return true;}}else{return true;{}}}},nMax:{validators:{notEmpty:{message:'最大值不能为空'},regexp: {regexp: /^[0-9._]+$/,message: '请输入有效的值'},callback: {message: '最大值不可小于最小值',callback: function(value, validator) {if(value != ''){var nMin = $("#form").data("bootstrapValidator").getFieldElements('nMin');if(nMin.val()!='' && Number(nMin.val())>Number(value)){return false;}else if(nMin.val()!='' && Number(nMin.val())<Number(value)){//从新验证该字段//$('#form').data('bootstrapValidator').revalidateField('nMin');//当符合规则手动修改该字段的验证状态/* 因为上面方法两个字段相互验证 ,会造成死循环,所以在两个字段比较之后,并且符合验证规则,就手动修改该字段的验证状态 */$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return true;}else if(nMin.val()==''){return true;}else{return true;}}else{return true;}}}}}}	});

三个值进行比较

nMin:{validators:{notEmpty:{message:"最小值不能为空"},regexp: {regexp: /^[0-9._]+$/,message: '请输入有效的值'},callback: {callback: function(value, validator) {var nSetVal = $("#form").data("bootstrapValidator").getFieldElements('nSetVal');var nMax = $("#form").data("bootstrapValidator").getFieldElements('nMax');//最小值大于设定值if( nSetVal.val()!='' && Number(nSetVal.val()) < Number(value) ){return { message:'最小值不可大于设定值', flag:false };//最小值大于最大值}else if( nMax.val()!='' && Number(nMax.val()) < Number(value) ){$('#form').data('bootstrapValidator').updateStatus("nSetVal", "VALID", null );return { message:'最小值不可大于最大值', flag:false };//最小值 小于 设定值}else if( nSetVal.val()!='' && Number(nSetVal.val()) >= Number(value) ){if( Number(nMax.val()) < Number(value) ){$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );return { message:'最小值不可大于最大值', flag:false };//最小值 小于设定值  小于最大值   符合全部要求}else if( nMax.val()!='' && Number(nMax.val()) >= Number(value) && Number(nMax.val()) >= Number(nSetVal.val()) ){$('#form').data('bootstrapValidator').updateStatus("nSetVal", "VALID", null );$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );return true;//最小值 小于设定值  大于最大值 }else{return true;}}else{return true;}}}}},nSetVal:{validators:{notEmpty:{message:'设定值不能为空'},regexp: {regexp: /^[0-9._]+$/,message: '请输入有效的值'},callback: {callback: function(value, validator) {var nMin = $("#form").data("bootstrapValidator").getFieldElements('nMin');var nMax = $("#form").data("bootstrapValidator").getFieldElements('nMax');//设定值小于最小值if( nMin.val()!='' && Number(nMin.val()) > Number(value) ){return { message:'设定值不可小于最小值', flag:false };//设定值 大于 最大值}else if( nMax.val()!='' && Number(nMax.val()) < Number(value) ){$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return { message:'设定值不可大于最大值', flag:false };//设定值 小于 最大值}else if( nMax.val()!='' && Number(nMax.val()) >= Number(value) ){if( nMin.val()!='' && Number(nMin.val()) > Number(value)){$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );	return { message:'设定值不可小于最小值', flag:false };//设定值 大于最小值 小于最大值   符合全部要求}else if( nMin.val()!='' && Number(nMin.val()) <= Number(value) && Number(nMax.val()) >= Number(value) ){$('#form').data('bootstrapValidator').updateStatus("nMax", "VALID", null );$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return true;}else{return true;}}else{return true;}}}}},nMax:{validators:{notEmpty:{message:"最大值不能为空"},regexp: {regexp: /^[0-9._]+$/,message: '请输入有效的值'},callback: {callback: function(value, validator) {var nMin = $("#form").data("bootstrapValidator").getFieldElements('nMin');var nSetVal = $("#form").data("bootstrapValidator").getFieldElements('nSetVal');//最小值大于最大值if( nMin.val()!='' && Number(nMin.val()) > Number(value) ){return { message:'最大值不可小于最小值', flag:false };//设定值 大于 最大值}else if( nSetVal.val()!='' && Number(nSetVal.val()) > Number(value) ){$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return { message:'最大值不可小于设定值', flag:false };//最小值 小于 最大值}else if( nMin.val()!='' && Number(nMin.val()) <= Number(value) ){if(nSetVal.val()!='' && Number(nSetVal.val()) > Number(value)){$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return { message:'最大值不可小于设定值', flag:false };//最小值 小于最大值 设定值 小于最大值   符合全部要求}else if( nSetVal.val()!='' && Number(nSetVal.val()) <= Number(value) && Number(nSetVal.val()) >= Number(nMin.val()) ){$('#form').data('bootstrapValidator').updateStatus("nSetVal", "VALID", null );$('#form').data('bootstrapValidator').updateStatus("nMin", "VALID", null );return true;//最小值 小于最大值 设定值 大于最大值}else{return true;}}else{return true;}}}}}

bootstrapValidator 常用的验证

//不为空验证
notEmpty: {message: '必须输入或者必须选择'
}//正整数验证
digits : {message : '字段必须是正整数'
}//内容最小值验证
greaterThan: {value : 1,message : '最小输入1'
}//内容最大值验证
lessThan: {value : 100message : '最大输入100'
}//正则验证
regexp: {regexp: /^[a-zA-Z0-9_]+$/,message: '正则验证,这里验证只能输入大小写字母数字和下划线'
}//内容长度验证
stringLength : {min : 2,max : 25,message : '长度2-25位字符'
}//回调验证
callback: {message: '请输入整数',callback: function(value, validator) {	//可以return   true  /  false//return  false;//也可以这样return { message:'最小值不可大于最大值', flag:false };}
}//日期验证
date: {format: 'YYYY/MM/DD',message: '日期无效'
}//数字验证
digits: {message: '该值只能包含数字。'
}//ajax验证
threshold :  6 , //有6字符以上才发送ajax请求,(input中输入一个字符,插件会向服务器发送一次,设置限制,6字符以上才开始)
remote: {//ajax验证。server result:{"valid",true or false} 向服务发送当前input name值,获得一个json数据。例表示正确:{"valid",true}  url: 'exist2.do',//验证地址message: '用户已存在',//提示消息delay :  2000,//每输入一个字符,就发ajax请求,服务器压力还是太大,设置2秒发送一次ajax(默认输入一个字符,提交一次,服务器压力太大)type: 'POST'//请求方式}//复选框验证
choice: {min: 2,max: 4,message: '请选择2-4项'
}//密码确认
identical: {field: 'confirmPassword',message: 'The password and its confirm are not the same'
}

http://chatgpt.dhexx.cn/article/lyRmkiGG.shtml

相关文章

class-validator中文教程

官方文档&#xff1a; https://www.npmjs.com/package/class-validator class-validator可以说是一个简化验证的依赖库 &#xff08;采用注释的方式进行校验&#xff09; 但是缺少中文文档和过程&#xff0c;以自己的理解和对官网文档的阅读进行整理输出。 它的好兄弟class-t…

Hibernate Validator 总结大全

背景 代码开发过程中&#xff0c;参数的有效性校验是一项很繁琐的工作&#xff0c; 如果参数简单&#xff0c;就那么几个参数&#xff0c;直接通过ifelse可以搞定&#xff0c;如果参数太多&#xff0c;比如一个大对象有100多个字段作为入参&#xff0c;你如何校验呢&#xff1…

java使用validator进行校验

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接&#xff0c;都需要对接收到的数据进行校验&#xff08;非空、长度、格式等等&#xff09;。如果使用if一个个进行校验&#xff08;字段非常多&#xff09;&#xff0c;这是让人崩溃的过程。幸好jdk或hibernate都…

java validator_Spring中校验器(Validator)的深入讲解

前言 Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不…

springboot使用hibernate validator校验

目录 一、参数校验二、hibernate validator校验demo三、hibernate的校验模式 1、普通模式&#xff08;默认是这个模式&#xff09;2、快速失败返回模式四、hibernate的两种校验 1、请求参数校验2、GET参数校验(RequestParam参数校验)3、model校验4、对象级联校验5、分组校验五…

Validator 使用总结

介绍 首先说下大家常用的hibernate-validator&#xff0c;它是对JSR-303/JSR-349标准的实现&#xff0c;然后spring为了给开发者提供便捷集成了hibernate-validator&#xff0c;默认在springmvc模块。 依赖 本文所介绍皆在springboot应用的基础上&#xff0c;首先加上web模块…

浅谈 Android Tombstone(墓碑日志)分析步骤

最近项目产品刚刚出货&#xff0c;客户退机、死机事件频发。日常解决bug中&#xff0c;少不了和墓碑日志打交道&#xff0c;截止今天之前&#xff0c;见到墓碑日志都是一脸懵逼&#xff0c;不知道怎么分析。最近又有了两个日志&#xff0c;硬着头皮看吧。之所以称之为浅谈&…

Android tombstone文件是如何生成的

本节内容我们聚焦到androidQ上&#xff0c;分析android中一个用于debug的功能&#xff0c;那就是tombstone&#xff0c;俗称“墓碑”。现实生活中墓碑一般是给死人准备的&#xff0c;而在android系统中“墓碑”则是给进程准备的。 为何Android要设计出这样一个东西呢&#xff…

【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

文章目录 一、崩溃信息描述二、手机命令行操作三、电脑命令行操作四、Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 ROOT 再说 , 没有 ROOT 权限无法访问该目录中的信息 ; 使用 Pixel 2 手机进行调试 , 其它 ROOT 后的手机也可以使用 …

Android tombstone 分析案例

Android tombstone 分析案例 tombstone文件内容1. 体系结构2. 发生Crash线程3. 原因4. 寄存器状态4.1 处理器工作模式下的寄存器4.2 未分组寄存器r0 – r74.3 分组寄存器r8 – r144.4 程序计数器pc(r15)4.5 程序状态寄存器4.6 ARM参数规则 5. 回溯栈6. 程序栈7. 寄存器地址附近…

RocksDB Tombstone 详解

目录 为什么会有墓碑&#xff1f; 使用场景 原理 描述 分段 查询 优化点 总结 为什么会有墓碑&#xff1f; 我们知道 TP 数据库一般选择 KV 引擎作为存储引擎&#xff0c;数据库的元数据和数据通过一定的编码规则变成 KV 对存储在存储引擎中&#xff0c;比如 CockroachD…

Tombstone 文件分析

Tombstone 文件分析 /* * 下面信息是dropbox负责添加的 **/ isPrevious: true Build: Rock/odin/odin:7.1.1/NMF26F/1500868195:user/dev-keys Hardware: msm8953 Revision: 0 Bootloader: unknown Radio: unknown Kernel: Linux version 3.18.31-perf-g34cb3d1 (smartcmhardc…

android Tombstone 流程

一 总述 下面是一份dump 的log&#xff1a; 810 876 I system_server: libdebuggerd_client: started dumping process 678 740 740 I /system/bin/tombstoned: registered intercept for pid 678 and type kDebuggerdNativeBacktrace 678 678 I libc : Requested du…

android tombstone log分析

今天和大家一起聊聊android 中出现的 Tombstone问题&#xff0c;近期在定制pad 上分析设备概率性重启&#xff0c;导出bugreport日志后&#xff0c;除了看到anr log外&#xff0c;同级目录下还看到了tombstones 并且对比以往日志&#xff0c;发现都生产了大量tombstone...,于是…

深入学习tombstone和signal

三驾马车&#xff08;CPU&#xff0c;内存和存储设备&#xff09;中&#xff0c;跑得最慢的就是存储设备了 电脑上&#xff0c;从HDD 到SSD&#xff0c;从SATA SSD到PCIe SSD&#xff0c;硬盘是越来越快&#xff1b; 手机上&#xff0c;从SD卡&#xff0c;到eMMC卡&#xff0…

tombstone

1.什么是tombstone 当一个动态库&#xff08;native 程序&#xff09;开始执行时&#xff0c;系统会注册一些连接到 debuggerd 的 signal handlers&#xff0c;当系统 crash 的时候&#xff0c;会保存一个 tombstone 文件到/data/tombstones目录下&#xff08;Logcat中也会有相…

Tombstone原理分析

本文主要围绕三个问题对tombstone进行分析和介绍&#xff0c;debuggerd是如何监控进程并生成tombstone的&#xff1f;tombstone文件中的信息都是什么&#xff0c;是怎么获取的&#xff1f;tombstone文件应该怎么分析&#xff1f; 一、Tombstone简介 当一个native程序开始执行时…

【date】Linux date命令修改时间的问题

Linux date命令修改时间的问题 问题路径找原因解决方法 问题 Android10&#xff1b;高通平台 使用下面date命令修改时间日期&#xff0c;时分秒生效&#xff0c;年月日不生效 > date -D YYYY-MM-DD hh:mm:ss 路径 \android\external\toybox\toys\posix\date.c \android\e…

i2ctools工具移植到android(使用NDK方式 在某android平台测试)

前提条件 主板i2c已在设备树配置status和引脚复用正常&#xff0c;即设备的i2c总线达到正常使用条件I2C device interface假设内核已配置进去 编译工具链NDK环境搭建 下载NDK 下载地址点我解压 ~/workspace/ndk$ ls android-ndk-r22b android-ndk-r22b-linux-x86_64.zip …

高通平台 Android9 adb shell “hwclock -w“ 报错

hwclock -w 报错 文章目录 hwclock -w 报错问题现象分析1. hwclock命令分析2. /dev/rtc0驱动节点分析 修改设备树后hwclock -w报错没有了&#xff0c;但是系统会重启&#xff0c;原因未知 问题现象 sdm660_64:/ # hwclock -w hwclock: ioctl 4024700a: Invalid argument分析 …