修改 jquery.validate.js 支持非form标签
尝试使用markdown来写一篇blog,啦啦啦
源代码传送门:github
在特殊情况下我们使用jquery.validate.js对用户输入的内容做验证的时候,表单并不是一定包含在form之中,有可能是一个div弹层,有可能是嵌套在form里面的一个div,这个时候官方的validate就不能很好的支持了。对此,在官方的源代码基础上做小小的改动,就能兼容原有form方式,也能使用于非form方式,何乐而不为呢。
分析官方代码之后,能得知它都是通过element.form找到当前input的form,在从form标签获取validate对象。那只要我们修改为我们指定的容器标签即可。
修改代码如下:
1.增加一个获取容器的方法
getContainer: function (element) { var container = $(element).closest('.validateContainer')[0]; container = container || element.form; return container; }
2.替换所有使用element.form为$.validator.getContainer(element)
demo:
<div id="x" class="validateContainer"> <input data-rule-required="true" data-rule-number="true" data-rule-digits="true" acc="x" Acc2="xx" AcAc="3" acAc="4" name="xx" /> <input type="submit" value="submit" /> </div> <script src="jquery-3.1.0.js"></script> <script src="jquery.validate.js"></script> <script> $("#x").validate(); </script>
当然,兼容性等尚未进行测试,经供参考
ps:话说markdown还是蛮好用的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义