有这样的需求,在数据展示编辑的时候,当离开某一行数据的时候,提示上一行数据的编辑是否符合条件校验规则。普通的校验,很容易实现,使用正则表达式也好,其他方式,也好,但是如何将离开当前行数据进行校验呢?下面提供一种方案适合各种情况的校验。
首先对各种可能的校验进行配置,这里需要一个数据库表,用来记录页面上需要校验的信息,字段有:当前页的id,用于区分不同页面或报表;需要校验的列名,校验的配置语句,可以为函数,也可以为SQL语句,用来按照列名进行校验,是否列校验(区分单列校验还是行校验),是否服务器端校验(区分服务器端参与校验还是客户端校验);这样就可以把校验规则进行存放至数据库,然后在页面加载的时候,将这些规则加载到页面,对数据进行校验处理;
下面是遇到的问题及解决办法,首先,是行校验的时机问题;我们使用的是普通的div布局,div不支持onblur、onfocus,所以没办法在div进行离开事件设置js处理函数。下面的方法可以让div具有onblur和onfocus属性,即使用tab属性,使任何标签具有该事件属性;什么标签具有tab呢?显然input和a是得天独厚的具有,我们经常用键盘上的tab键进行移动光标的时候,我们发现光标只在具有tab属性的元素上进行跳转。我们现在来让div拥有tab并具有onfucus和onblur属性! 给元素创建tab属性:tabindex=参数(这里和z-index类似,计算tab起点)。
<div tabindex="0" hidefocus="true" onfocus='alert("得到焦点");' onblur='alert("失去焦点");' style="border:1px solid #ccc;width:200px;height:200px;outline=0;"> </div>
另外,定义tab属性后,元素是默认会加上焦点虚线的,那么在IE中可以通过hidefocus="true"去除!其他浏览器通过 outline=0进行去除!width和height属性不是必要的,可以去除;onfocus、onblur事件均不能够冒泡,因此在IE中无法进行事件代理(IE只支持冒泡方式),而在chrome、firefox中则可以将处理函数绑定在事件捕捉阶段(即将addEventListener的最后一个参数设置为true);这样可以解决div没有onblur属性的问题;
其次:但是当离开表格的时候,如何判断是否离开当前行了还是在原来行,因为离开单元格会出现以下几种情况:离开单元格进入同行单元格、离开当前单元格进行其他行单元格,离开当前单元格进入除单元格的其他区域等;下面给出了一种解决方案,主要是使用以下两个对象:activeElment和srcElement ; activeElment指光标源所在的对象,是属于document的一个属性,如光标在页面的某个输入框里,判断当前光标的位置可用,document.activeElement 即可获得光标对象;srcElement 是鼠标触发事件的对象,event的一个属性。如鼠标点击,判断触发的对象,可采用event.srcElement 则获得该对象;注意这两个对象在不同浏览器稍有区别如:FF下 event.target获得;由此可以通过判断行数据的tr的id可以得知具体鼠标的移动方向了;在显示数据的时候,生成的行的tr_id跟数据的息息相关,如可以采用 表名_主键_k,k=0,1,2... ,这样通过判断activeElement.tr_id和srcElement . tr_id的不同区分是在行内和行间;通过activeElement.tr_id是否为空判断是否离开数据区域,完成数据的离开校验;上面的情况,通过在离开行的时候进行行校验,可以解决当用户在同一行反复写的导致的不必须的行校验,同时解决了数据区域最后一行无法前后对比tr_id校验的弊端;
然后就是对校验进行分类,涉及到数据类型校验、空校验、存在性,页面录入重复校验,归一性校验,唯一性校验、区间有效性校验等;这样根据业务的区别将校验规则放置数据库中,页面加载时载入页面完成对数据的有效性校验;
本文原创,转载注明来源 http://yuexiaodong.iteye.com
相关推荐
在网页开发中,js(JavaScript)正则表达式常用于页面校验,确保用户输入的数据符合预设格式,如邮箱、电话号码、日期等。下面我们将深入探讨正则表达式的基础知识,以及如何在JavaScript中应用它们进行页面校验。 ...
这个"js javaScript 验证校验小工具包"显然是一个集合了各种JavaScript验证和校验功能的资源库,旨在帮助开发者更方便地处理表单验证、数据格式检查等常见任务。 在前端开发中,验证和校验通常涉及以下几个方面: ...
从给定的文件信息来看,我们正在探讨的主题是“页面的数据校验JS和HTML”,这是一个在Web开发中非常重要的主题,特别是在确保用户输入数据的有效性和安全性方面。下面将详细解析这个主题的关键知识点。 ### 页面...
- **sample.html**:这个文件可能是框架的一个示例页面,展示如何在实际项目中使用后台JS校验框架。通过查看这个文件,开发者可以学习如何配置和调用验证函数,以及如何处理验证结果。 - **ReadMe.txt**:这是一个...
3. **客户端校验**:客户端校验是指在用户的浏览器端执行的校验,通常使用JavaScript或HTML5的内置校验功能。这种校验可以提供即时反馈,减少服务器的负担,但可能被恶意用户绕过。 4. **服务器端校验**:尽管...
在网页开发中,JavaScript(简称JS)是一种必不可少的前端编程语言,它被广泛用于实现页面交互和用户输入验证。"js文本框校验控件"是JavaScript技术在表单验证中的应用,主要用于确保用户在输入框中输入的数据符合...
JavaScript(简称JS)是网页开发中用于实现动态交互的重要脚本语言,特别是在处理表单验证时,它的作用不可或缺。表单验证确保用户输入的数据符合预设的规则,从而提高用户体验并减少服务器端的压力。本文将深入探讨...
<script type="text/javascript" src="${request.contextPath}/js/common/plug/jquery/jquery.js"> <script type="text/javascript" src="${request.contextPath}/js/common/plug/jquery/jquery.validate.min.js...
"页面特效JavaScript校验等"这一主题涵盖了两个主要概念:页面特效和JavaScript验证。 页面特效是网页设计中的一个关键元素,它使得用户体验更加生动有趣。JavaScript能够帮助开发者创建出各种各样的视觉效果,如...
【标题】中的“一个标准的register注册页面(含JS校验和页面跳转)”指的是一种常见的Web开发场景,即创建一个用户注册界面,其中包含了JavaScript进行的数据验证以及基于验证结果的页面重定向功能。这样的页面是任何...
这个“常用js大全,javascript校验大全”集合了多种常见的验证功能,确保用户输入的数据格式正确,从而提高用户体验和系统安全性。以下是一些主要的知识点: 1. **数字验证**:用于检查字符串是否全由数字组成,这...
在JavaScript(简称js)中,实现校验码的使用可以为网页应用,尤其是登录界面提供额外的安全保障。例如,它可以用于验证用户输入的密码强度、邮箱格式,甚至防止机器人自动填写表单。在Web平台上,js校验码的应用...
本话题主要聚焦于“注册js校验 验证码”这一主题,我们将深入探讨JavaScript在实现邮箱校验、密码校验以及验证码生成与校验中的应用。 首先,邮箱校验是确保用户输入有效邮箱地址的关键步骤。在JavaScript中,我们...
这篇名为"Cron expression 校验 js版本"的博客文章可能详细介绍了如何用JavaScript编写一个Cron表达式校验函数。作者可能分享了如何将Cron字符串分解为各个部分,逐一检查每个部分的合法性,以及如何处理特殊情况,...
本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)。分享给大家供大家参考。具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) [removed] [removed] = ...
此外,PHP语言的特性使得这种页面校验更加便捷,它的语法接近C和Perl,支持CGI和JavaScript类似的功能,能够在客户端实现复杂的安全验证逻辑。同时,结合Linux服务器的稳定性和Apache与Mysql的高效搭配,使得基于...
6. **JavaScript中的校验**:在网页中,最常使用JavaScript进行客户端的实时校验,因为它可以在用户提交数据前就提供反馈,提高用户体验。通过JavaScript的`test()`方法,我们可以结合正则表达式实现输入校验。 7. ...
"采用简单js校验"表明注册和登录表单使用JavaScript进行了一些基本的输入验证,如非空检查、格式验证等。 **注册页面** 通常包含用户信息输入字段,如用户名、电子邮件、密码等。前端验证可能包括检查用户名是否为...
1、步骤分析 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据&...2、完成注册页面表单校验 <!DOCTYPE html> <html> <head> <meta charset="UTF-8">