
你应该已经读过很多关于HTML5和Javascript的
表单标签和
数据验证的文章,今天我们来讨论下如何检查表单数据是否被改变了。为什么要检查表单数据被改变?有很多理由需要检测表单数据是否有修改,让我们来看一个很常见的场景,如果用户修改了一个或多个表单域的值,当用户跳离当前页面时,你会给出用户类似“你的修改尚未保存”的提示。你甚至可以给出用户是否保存数据(比如Ajax)的选项。另外的情况,如果表单项没有被修改,这时略去冗余的表单验证和数据发送将会增强用户体验。Javascript�0�2onchange事件为HTML表单元素添加onchange事件处理器是一种可行的方法,这也是用的最多的,但是onchange的实现有一些问题存在:如果用户改变表单域的值,然后再修改回原始值,程序仍将认为表单的修改已经发生。如果表单项的值是通过Javascript动态修改的,onchange事件不会被自动触发。为每一个表单元素增加onchange事件会引起性能问题,特别是较大的表单。如果将表单元素从DOM中增加或移除,你需要相应的注册或移除事件侦听。checkbox和radio的onchange事件在某些浏览器下不能按预期工作(你应该知道是哪个浏览器)。除了onchange,还有更简单有效的方案。比较默认值幸运的是,我们不需要为了复杂的事件处理而写过多的废话,每个表单元素都有与该对象相关联的默认值,即页面加载完后表单控件显示或者默认的数据值,该值可与用户 *** 作后的值进行对比以得出表单域的值是否发生了改变。我们可以从select节点的selectedIndex属性取得当前选中的option的索引值,如果该option对象的defaultSelected属性为false,那么select控件的值一定被修改了,如: web�0�2designer csser.com�0�2developer graphic�0�2artist IT�0�2professional other var�0�2job�0�2=�0�2document.getElementById("job")if�0�2(!job.options[job.selectedIndex].defaultSelected)�0�2alert("#job�0�2has�0�2changed")上面的代码在单选下拉列表并且有一个option拥有selected特性时运行正常,但我们需要留意一些陷阱:如果没有option被赋予selected特性,浏览器会将第一个设为默认选中,但其defaultSelected属性值却为false如果两个或更多option拥有selected特性(这不合逻辑,但是可能的),每个option都会拥有defaultSelected属性且值为true,但是浏览器仅能得到最后一个的默认值。一般软件开发是有个范围的,这个范围定义基本上来源于基础需求和设计,所有在工程开始后对范围进行修改的请求都叫做“变更”。
在软件工作进行到一定程度时(不一定是开发),测试就要介入,在测试过程中可能会发现一些问题或缺陷(问题是未实现的需求或设计,缺陷则是系统方面的设计不足或情况考虑不周),这时候就要由测试人员发起一条程序修改的请求(一般是在软件质量管理系统中提交),这个变更请求就是您问题中说的“软件测试提变更”。当然这种变更有合理的,也有不合理的,主要看测试人员对需求、软件目标、开发技术了解的深入程度了。
以前的解释比较通俗,按照项目管理的描述,一般项目和产品都会建立基准、基线(Baseline)这样的需求、设计、实现、配置、部署、制度、要求、标准等的集合,由于所有项目或产品工作人员(特别时关键人员)当前对工作的理解都是基于基线的,所以当有任何导致基线发生变化的事情要发生,都要进行控制和管理。主要管理的方法就是变更管理,要变化基线之前,必须提出变更请求,然后按照分析->评估->决策->通知记录->执行->监控->更新的大致流程来执行。防止出现“新来的小伙更了一段代码,第二天业务瘫了”之类的情况,这个例子并不是玩笑。
谈点粗浅的见解:
1. 浏览器的兼容性:表单应该能够使用任何浏览器都能显示和提交
2. 表单应该具有在提交前的数据有效性判断(在客户端需要使用JS来判断)
3. 数据到了服务器要做两方面的测试:
A. 常规数据测试:输入一些在设计时正常的数据,看结果是否正确。
B. 特殊数据测试:输入一些非常规数据,如果姓名框里输入一些乱七八糟的字符,或超长的字符 ,看能够正确插入数据库(这一步检查程序有无作超长数据的判断和截取)
4. 其它的可能引起不能正常输入数据和影响插入数据库的测试
评论列表(0条)