如何让form网页自动刷新新的相关推荐

界面(FORM)自动生成工具 - 设计前沿
界面(FORM)自动生成工具
文章出处:网络转载 作者:未知 发布时间:
????? 关键词:界面(FORM)自动生成工具&界面自动生成工具
主题:本文介绍了一个直接根据表结构定义自动生成对该表记录进行存取操作界面(FORM)的工具
1.&&& 界面自动生成的必要性
一般在数据库应用程序,特别是MIS软件开发时,都会选择使用开发工具,如PB、C++BUILDER,DELPHI,UNIFACE等等。这些工具为数据库应用程序的开发提供了强大的支持和帮助,使大部分开发工作转化成一种简单的,机械重复劳动。对一个新手,只要拖拉一些控件,在短短1-2个小时就可开发出一个可对数据库进行操作的漂亮界面,这对一个新手的工作是一个极大的鼓励。但我与一些从事数据库应用程序开发时间较长的朋友交谈时,他们几乎全部都抱怨做数据库应用程序开发太没有意思,没有创新,作长了感觉很烦。有个朋友也做了个小工具来减少重复劳动,效果还不错。因此本人就决定开发了界面自动生成工具。开发的第一个工具是以ORACLE和C++BUILDER 为基础的,用于一个大型MIS项目开发,效果很好,大大地减少开发工作量,降低了开发成本,特别是为维护工作带来了很大方便。在那个开发项目中,当第一个开发负责人因故要离开该项目时,软件交接很容易。这是因为自动生成的程序很整齐,很规范,严格遵守命名规则,因此程序的可读性很好,数据库中的表名与界面名和源文件名直接对应,找源文件就很方便。 在第一个工具成功的鼓励下,本人开发了实用性更强的第二个工具,是基于DELPHI的,可选择ORACLE 或SQL-SERVER数据库管理系统,及BDE或ADO连接方式。这里主要介绍第二个工具的一些设计思路。
2.&&& 工具设计的主要思路
由于界面的一个重要功能是对数据库中表内的数据进行存取,界面与表之间有着直接关联,因此这里采用为每个数据库表生成一套界面的思路。由于每个表的数据项多少不同,界面的空间有限,这里根据每个表内数据项所占用的空间不同生成三种界面:
&A 对数据项占用空间较小的情况,在界面的上半部安排一个记录列表(DBGRID),
下半部安排编辑面板(安排LABEL和各种编辑框)。如图1
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图1
B对数据项占用空间中等的情况,把记录列表和编辑面板分别安排在两个界面
上。通过记录列表上的编辑按钮,调用编辑面板界面。如图2
&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&
其中相片为图形文件,挡案按钮自动调用WORD,且把该WORD文件保存到数据库中去。
C对数据项占用空间较大的情况,生成类似与B的界面,只是在编辑界面上有
多页切换功能。
& 作为工具设计者来说,总希望生成的界面具有尽可能多的功能。但是靠计算机自动生成的只能是一些常规的,公共通用功能。对一些业务规则要求的非常规功能要自动生成难度很大,这还得靠人工来编程。对一些通用常规功能是否能自动生成,这还取决于该功能的语法定义是否简洁直观,及生成器开发难度。我们在生成器开发前,先开发尽可能多的通用控件。我们开发的通用控件有:通用打印控件,通用查询控件及时间编辑框。在对时间编辑框内数据进行编辑时,程序会自动弹出日历窗口。对DBGRID的功能进行扩展,可对DBGRID中的每一列进行排序,求最大值,最小值,平均值及求和。对界面生成时可供开发者选择的功能如下。
1)可选择该界面所对应的数据集使用TTABLE还是使用TQUERY。当使用后者时,给出查询条件。
2)一个数据项是否允许为空。本来数据库本身会做这个检查,但为提高效率,我们把这个检查放到前端来做。
3)该数据项在界面上是否可见。
4)该数据项是否是只读,或在插入时可给出数据,但不允许修改。
5)该数据项是否代表货币。
6)给出该数据项的检查范围(LIMIT)。
7)给出该数据项在读写时的MARSK。
8)定义该数据项是否存储图形文件,用户编辑该数据项时,当该数据项为空时会自动弹出文件目录窗口,供用户选择加载图形文件。当该数据项有内容时,会调用该图形文件的处理软件。
9)定义该数据项是否存储WORD文件。当用户编辑这个数据项时程序会自动弹出WORD窗口。
10)&&&&&&&&& 可定义一个数据项为LIST框,且给出LIST内容。
11)&&&&&&&&& 定义一些数据项,当这些数据项的内容都不为空时,它们所对应的记录将不允许修改和删除。(对应批准后的记录不能修改和删除的情况)。
在界面上除了提供常规的新增、修改和删除(确认,取消)外,还提供两个功能:在插入时可选择复制当前记录的数据。当用户调用其他操作,引起数据集刷新的情况时,光标会自动定位到原来位置。
&& 对LOOK UP 框,从生成器实现来说,难度不大,但因要求的参数太多,开发者容易填错,这里就没有提供,让开发者手工来实现。在数据库应用程序开发中会大量使用的主从表结构,因语法定义有困难,这里就没有提供这种界面的自动生成。对一个主表对应多个从表的情况,有的开发者把一个界面的上半部分安排给主表,下半部分重叠多个子表,用按钮来切换子表,这样使用起来很方便。对这样的情况,开发者可在已生成界面的基础上,手工实现这样的界面安排,起码可减少工作量。可自动生成的通用功能可能还有不少,欢迎读者给我们提出新的建议。
3.&&& 使用工具后的开发重点转移
目前我们使用的建模工具为ER-WIN。我们把数据项的物理含义说明放到逻辑模型的COMMENT中,把生成所需的选择放到物理模型的COMMENT中,预先为REPORT准备好一个模板。这样利用ER-WIN的REPORT功能,就可把生成器所需要的数据,通过ER-WIN的REPORT功能,按规定格式写入到一个TXT文件中去。生成器读这个TXT文件就可自动生成该文件中要求的全部界面。在C++BUILDER中生成器生成全部界面的 H 文件,PCC文件,DFM文件及作为主程序的PCC文件。在DELPHI中生成全部 PAS文件,DFM文件及作为主程序的DPR文件。在界面自动生成的基础上,开发者要做三件工作:
1)&&&&& 根据业务处理流程,组织界面调用次序。这样生成的界面把数据库表定义,表操作和界面结合在一起对象性很强,很容易实现业务流程重构的要求。
2)&&&&& 对表上一些生成器不能提供的操作,开发者手工去做。如安排新的按钮,编写事件程序,在已生成的程序中增加或删除部分代码,调用存储过程等。在实际工作中,当对已生成的代码作增删处理时,我们规定在修改处的两头必须用规定格式的注释行做出标记。这样当一个表中定义的数据项要增删改的修改时,在界面重新生成后,很容易把修改部分人工合到新界面程序中去。将来也可开发工具把修改部分自动合到新生成的界面中去。
3)&&&&& 根据业务处理要求,编写存储过程。这里我们建议把尽可能多的业务处理放到存储过程中去做,这样做,其优点是明显的
& 由此可见,使用该工具开发时,开发者在概要设计时重点主要放在两个方面:一是搞好数据结构及相关界面生成参数设计,重点是使用ER-WIN去建模。另一个方面是搞好业务流程的提取,分析,整理。开发者不必再去考虑那些琐碎功能的分配与安排。采用界面自动生成工具来开发数据库应用程序带来的优点主要为:
1)容易保证程序和文档的一致性。当数据结构需要修改时,总是按照先修改ER-WIN内数据,再通过ER-WIN自动修改数据库内的表,再自动生成界面这个原则,文档和程序都来自同一个数据源,文档和程序自然会保持同步。
2)开发者可把主要精力放到业务流程分析及业务处理的实现,使开发工作显得不那么枯燥,开发者可把主要精力放到创造性的工作上去。
3)大大简化了文档编写工作。开发者在文档编写时可把主要精力放到业务流程分析结果的描述,存储过程定义,实现途径的描述。有关数据结构的描述及通用操作,可通过ER-WIN的REPORT功能直接产生。对在生成的界面程序上做增删改的那部分代码,由于这些都是小程序,很容易理解,详细设计说明书的编写要求可大量简化。对一些复杂程度不太高的系统,这部分的详细设计说明书可采用在程序中加较详细的注释行来代替。
4)采用工具来开发数据库应用系统,工作分工明确,层次分明,很容易实现大兵团联合开发的工作模式。集成调试相对要容易些。
5)降低开发成本,缩短开发周期,提高软件质量,增加软件系统的可维护性方面的优点,这里就不再赘述了。
4.&&& 其他
本工具开发出来后,在本人周围的软件开发人员中引起两种不同的反响。一部分人员认为,该工具把他们从枯燥,无聊的重复劳动中解放出来,在软件开发中突出了系统分析和设计的重要性,对工具表示欢迎。另一部分人员认为该工具使用后,使软件开发失去了一种艺术创造的激情,用工具开发出来的界面过于单调,朴素,不易为用户接受。在1997年出版的本人所著的“软件开发技术与实践”一书中本人曾表示过这样的观点:为促进我国的软件事业发展,一定要把软件开发从艺术创造中解脱出来,走工业化大生产的路。
??????????????当前位置:&>&&>&
> 正文 Form 表单
细说 Form 表单
发布时间:编辑:theboy
Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源。
&&&&本文对form做了深入而透彻的讲解与分析,感兴趣的朋友请参考学习之。
&&& Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源。 虽然Asp.net WebForms框架为了帮助我们简化开发工作,做了很完美的封装,让我们只需要简单地使用服务端控件就可以直接操作那些 HTML表单元素了。但我认为了解一些基础的东西,可以使我们不必束缚在WebForms框架上,以及遇到一些奇怪问题时, 可以更从容地解决它们。
&&& 今天,我将和大家来聊聊表单,这个简单又基础的东西。我将站在HTML和单纯的Asp.net框架的角度来解释它们的工作方式, 因此,本文不演示WebForms服务器控件的相关内容。
简单的表单,简单的处理方式
好了,让我们进入今天的主题,看看下面这个简单的HTML表单。
复制代码 代码如下:
&form action=&Handler1.ashx& method=&post& &
&p&客户名称: &input type=&text& name=&CustomerName& style=&width: 300px& /&&/p&
&p&客户电话: &input type=&text& name=&CustomerTel& style=&width: 300px& /&&/p&
&p&&input type=&submit& value=&提交& /&&/p&
在这个HTML表单中,我定义了二个文本输入框,一个提交按钮,表单将提交到Handler1.ashx中处理,且以POST的方式。
注意哦,如果我们想让纯静态页面也能向服务器提交数据,就可以采用这样方式来处理:将action属性指向一个服务器能处理的地址。
说明:当我们使用WebForms的服务器表单控件时,一般都会提交到页面自身来处理(action属性指向), 这样可以方便地使用按钮事件以及从服务器控件访问从浏览器提交的控件输入结果。
如果在URL重写时,希望能在页面回传时保持URL不变,即:action为重写后的URL,那么可以Page类中执行以下调用:
复制代码 代码如下:
Form.Action = Request.RawU&&& // 受以下版本支持:3.5 SP1、3.0 SP1、2.0 SP1
好了,我们再回到前面那个HTML表单,看一下如果用户点击了&提交&按钮,浏览器是如何把表单的内容发出的。 在此,我们需要Fiddler工具的协助,请在提交表单前启动好Fiddler。我将这个表单的提交请求过程做了如下截图。
上图是将要提交的表单的输入情况,下图是用Fiddler看到的浏览器发出的请求内容。
在这张图片中,我们可以看到浏览器确实将请求发给了我前面在action中指定的地址,且以POST形式发出的。 表单的二个控件的输入值放在请求体中,且做了【编码】处理,编码的方式用请求头【Content-Type】说明, 这样,当服务端收到请求后,就知道该如何读取请求的内容了。 注意:表单的数据是以name1=value1&name2=value2 的形式提交的,其中name,value分别对应了表单控件的相应属性。
我们还可以在Fiddler中,将视图切换到WebForms选项卡,这样能更清楚地只查看浏览器提交的数据,如下图。
看了客户端的页面和请求的内容,我们再来看看在服务端如何获取浏览器提交的表单的输入吧,代码如下:
复制代码 代码如下:
string name = context.Request.Form[&CustomerName&];
string tel = context.Request.Form[&CustomerTel&];
代码很简单,直接根据表单控件的name属性访问Request.Form就可以了。
,成功控件
我们再来看一下浏览器是如何提交表单的,或者说,浏览器在提交表单时,要做哪些事情。
浏览器并不是将所有的表单控件全部发送到服务器的,而是会查找所有的【成功控件】,只将这些成功控件的数据发送到服务端, 什么是成功控件呢?
简单地来说,成功控件就是:每个表单中的控件都应该有一个name属性和&当前值&, 在提交时,它们将以 name=value 的形式做为提交数据的一部分。
对于一些特殊情况,成功控件还有以下规定:
1. 控件不能是【禁用】状态,即指定【=&disabled&】。即:禁用的控件将不是成功控件。
2. 如果一个表单包含了多个提交按键,那么仅当用户点击的那个提交按钮才算是成功控件。
3. 对于控件来说,只有被用户勾选的才算是成功控件。
4. 对于radio button来说,只有被用户勾选的才算是成功控件。
5. 对于select控件来说,所有被选择的选项都做为成功控件,name由select控件提供。
6. 对于file上传文件控件来说,如果它包含了选择的文件,那么它将是一个成功控件。
此外,浏览器不会考虑Reset按钮以及OBJECT元素。
1. 对于checkbox, radio button来说,如果它们被确认为成功控件,但没有为控件指定value属性, 那么在表单提交时,将会以&on&做为它们的value
2. 如果在服务端读不到某个表单控件的值,请检查它是否满足以上规则。
提交方式:在前面的示例代码中,我为form指定了method=&post&,这个提交方法就决定了浏览器在提交数据时,通过什么方式来传递它们。
如果是【post】,那么表单数据将放在请求体中被发送出去。
如果是【get】,那么表单数据将会追加到查询中,以查询字符串的形式提交到服务端。
建议:表单通常还是以post方式提交比较好,这样可以不破坏URL,况且URL还有长度限制。
数据的编码:前面我将浏览器的请求细节用Fiddler做了个截图,从这个图中我们可以看到:控件输入的内容并不是直接发送的, 而是经过一种编码规则来处理的。目前基本上只会只使用二种编码规则:application/x-www-form-urlencoded 和 multipart/form-data , 这二个规则的使用场景简单地说就是:后者在上传文件时使用,其它情形则使用前者(默认)。
这个规则是在哪里指定的呢? 其实form还有个enctype属性,用它就可以指定编码规则,当我在VS2008写代码时,会有以下提示:
按照我前面说过的编码规则选择逻辑,application/x-www-form-urlencoded做为默认值,所以,一般情况下我们并不用显式指定。 除非我们要上传文件了,那么此时必须设置enctype=&multipart/form-data&
好了,说了这么一大堆理论,我们再来看一下浏览是如何处理表单数据的。这个过程大致分为4个阶段:
1. 识别所有的成功控件。
2. 为所有的成功控件创建一个数据集合,它们包含 control-name/current-value 这样的值对。
3. 按照form.enctype指定的编码规则对前面准备好的数据进行编码。编码规则将放在请求中,用【Content-Type】指出。
4. 提交编码后的数据。此时会区分post,get二种情况,提交的地址由form.action属性指定的。
多提交按钮的表单
用过Asp.net WebForms框架的人可能都写过这样的页面:一个页面中包含多个服务端按钮。处理方式嘛, 也很简单:在每个按钮的事件处理器写上相应的代码就完事了,根本不用我们想太多。
不过,对于不理解这背后处理过程的开发人员来说,当他们转到MVC框架下,可能会被卡住:MVC框架中可没有按钮事件! 即使用不用MVC框架,用ashx通用处理器的方式,也会遇到这种问题,怎么办?
对于这个问题,本文将站在HTML角度给出二个最根本的解决办法。
方法1:根据【成功控件】定义,我们设置按钮的name,在服务端用name来区分哪个按钮的提交:
复制代码 代码如下:
&form action=&Handler1.ashx& method=&post&&
&p&客户名称: &input type=&text& name=&CustomerName& style=&width: 300px& /&&/p&
&p&客户电话: &input type=&text& name=&CustomerTel& style=&width: 300px& /&&/p&
&p&&input type=&submit& name=&btnSave& value=&保存& /&
&&& &input type=&submit& name=&btnQuery& value=&查询& /&
服务端处理代码
复制代码 代码如下:
// 注意:我们只要判断指定的name是否存在就可以了。&&&&&&&
if( string.IsNullOrEmpty(context.Request.Form[&btnSave&]) == false ) {
&&& // 保存的处理逻辑
if( string.IsNullOrEmpty(context.Request.Form[&btnQuery&]) == false ) {
&&& // 查询的处理逻辑
方法2:我将二个按钮的name设置为相同的值(根据前面的成功控件规则,只有被点击的按钮才会提交),在服务端判断value,示例代码如下:
复制代码 代码如下:
&form action=&Handler1.ashx& method=&post&&
&p&客户名称: &input type=&text& name=&CustomerName& style=&width: 300px& /&&/p&
&p&客户电话: &input type=&text& name=&CustomerTel& style=&width: 300px& /&&/p&
&p&&input type=&submit& name=&submit& value=&保存& /&
&&& &input type=&submit& name=&submit& value=&查询& /&
复制代码 代码如下:
string action = context.Request.Form[&submit&];
if( action == &保存& ) {
&&& // 保存的处理逻辑
if( action == &查询& ) {
&&& // 查询的处理逻辑
当然了,解决这个问题的方法很多,我们还可以在提交前修改form.action属性。 对于MVC来说,可能有些人会选择使用Filter的方式来处理。最终选择哪种方法,可根据各自喜好来选择。
我可能更喜欢直接使用Ajax提交到一个具体的URL,这样也很直观,在服务端也就不用这些判断了。接着往下看吧。
上传文件的表单
前面我说到&数据的编码&提到了form.enctype,这个属性正是上传表单与普通表单的区别,请看以下示例代码:
复制代码 代码如下:
&form action=&Handler2.ashx& method=&post& enctype=&multipart/form-data&&
&p&&input type=&text& name=&str& value=&一个字符串,别管它& /&&/p&
&p&要上传的文件1&input type=&file& name=&file1&/&&/p&
&p&要上传的文件2&input type=&file& name=&file2&/&&/p&
&p&&input type=&submit& value=&提交& /&&/p&
我将上传2个小文件
我们再来看看当我点击提交按钮时,浏览器发送的请求是个什么样子的:
注意我用红色边框框出来的部分,以及请求体中的内容。此时请求头Content-Type的值发生了改变, 而且还多了一个叫boundary的参数,它将告诉服务端:请求体的内容以这个标记来分开。 并且,请求体中每个分隔标记会单独占一行,且具体内容为:&--& + boundary, 最后结束的分隔符的内容为:&--& + boundary + &--& 也是独占一行。 从图片中我们还可以发现,在请求体的每段数据前,还有一块描述信息。
具体这些内容是如何生成的,可以参考本文后面的实现代码。
再来看看在服务端如何读取上传的文件。
复制代码 代码如下:
HttpPostedFile file1 = context.Request.Files[&file1&];
if( file1 != null && string.IsNullOrEmpty(file1.FileName) == false )
&&& file1.SaveAs(context.Server.MapPath(&~/App_Data/&) + file1.FileName);
HttpPostedFile file2 = context.Request.Files[&file2&];
if( file2 != null && string.IsNullOrEmpty(file2.FileName) == false )
&&& file2.SaveAs(context.Server.MapPath(&~/App_Data/&) + file2.FileName);
HttpFileCollection files = context.Request.F
foreach( string key in files.AllKeys ) {
&&& HttpPostedFile file = files[key];
&&& if( string.IsNullOrEmpty(file.FileName) == false )
&&&&&&& file.SaveAs(context.Server.MapPath(&~/App_Data/&) + file.FileName);
二种方法都行,前者更能体现控件的name与服务端读取的关系,后者在时有更好的扩展性。
安全问题:注意,上面示例代码中,这样的写法是极不安全的。正确的做法应该是:重新生成一个随机的文件名, 而且最好能对文件内容检查,例如,如果是图片,可以调用.net的一些图形类打开文件,然后&另存&文件。 总之,在安全问题面前只有一个原则:不要相信用户的输入,一定要检查或者转换。
MVC Controller中多个自定义类型的传入参数
前面的所有示例代码中都有一个规律:在服务端读取浏览器提交的数据时,都会使用控件的name属性,基本上在Asp.net中就是这样处理。 但是在MVC中,MS为了简化读取表单数据的代码,可以让我们直接在Controller的方法中直接以传入参数的形式指定, 此时框架会自动根据方法的参数名查找对应的输入数据(当然也不止表单数据了)。下面举个简单的例子:
复制代码 代码如下:
&form action=&/Home/Submit& method=&post&&
&p&客户名称: &input type=&text& name=&Name& style=&width: 300px& /&&/p&
&p&客户电话: &input type=&text& name=&Tel& style=&width: 300px& /&&/p&
&p&&input type=&submit& value=&提交& /&&/p&
Conntroller中的方法的签名:
复制代码 代码如下:
public ActionResult Submit(Customer customer)
public ActionResult Submit(string name, string tel)
以上二种方法都是可以的,当然了,前者会比较好,但需要事先定义一个Customer类,代码如下:
复制代码 代码如下:
public class Customer
&&& public string Name { }
&&& public string Tel { }
如果表单简单或者业务逻辑简单,我们或许一直也不会遇到什么麻烦,以上代码能很好的工作。 但是,如果哪天我们有了新的业务需要求,需要在这个表单中同时加上一些其它的内容,例如,要把业务员的资料也一起录入进去。 其中业务员的实体类定义如下:
复制代码 代码如下:
public class Salesman
&&& public string Name { }
&&& public string Tel { }
Controller的接口需要修改成:
public ActionResult Submit(Customer customer, Salesman salesman)
这时,HTML表单又该怎么写呢?刚好,这二个类的(部分)属性名称一样,显然,前面表单中的Name,Tel就无法对应了。 此时我们可以将表单写成如下形式:
复制代码 代码如下:
&form action=&/Home/Submit& method=&post&&
&p&客户名称: &input type=&text& name=&customer.Name& style=&width: 300px& /&&/p&
&p&客户电话: &input type=&text& name=&customer.Tel& style=&width: 300px& /&&/p&
&p&销售员名称: &input type=&text& name=&salesman.Name& style=&width: 300px& /&&/p&
&p&销售员电话: &input type=&text& name=&salesman.Tel& style=&width: 300px& /&&/p&
&p&&input type=&submit& value=&提交& /&&/p&
注意Controller方法中的参数名与HTML表单中的name是有关系的。
F5刷新问题并不是WebForms的错
刚才说到了MVC框架,再来说说WebForms框架。以前时常听到有些人在抱怨用WebForms的表单有F5的刷新问题。 在此我想为WebForms说句公道话:这个问题并不是WebForms本身的问题,是浏览器的问题, 只是如果您一直使用WebForms的较传统用法,是容易产生这个现象的。那么什么叫做【传统用法】呢?这里我就给个我自己的定义吧: 所谓的WebForms的传统用法是说:您的页面一直使用服务器控件的提交方式(postback),在事件处理后,页面又进入再一次的重现过程, 或者说:当前页面一直在使用POST方式向当前页面提交。
那么如何避开这个问题呢?办法大致有2种:
1. PRG模式(Post-Redirect-Get),在事件处理后,调用重定向的操作Response.Redirect(), 而不要在事件处理的后期再去给一些服务器控件绑定数据项了!
建议:按钮事件只做一些提交数据的处理,将数据绑定的操作放在OnPreRender方法中处理,而不是写在每个事件中(遍地开花)。 不过,这种方式下,可能伟大的ViewState就发挥不了太大的作用了,如果您发现ViewState没用了,在Web.config中全局关掉后, 又发现很多服务器控件的高级事件又不能用了!嗯,杯具有啊。
这个话题说下去又没完没了,到此为止吧,不过,千万不要以为这种方法是在倒退哦。
2. 以Ajax方式提交表单,请继续阅读本文。 &1&&&
本文标题:
本页链接:
12345678910[【求】javascript代码]怎样一刷新,就让给表单里的控件获得焦点_百度知道
[【求】javascript代码]怎样一刷新,就让给表单里的控件获得焦点
提问者采纳
document.表单名.表单元素名.focus();如document.form1.password.focus()
提问者评价
谢谢。我也刚调试通过了。
其他类似问题
javascript的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& & 复制代码代码如下:& & //使页面不可编辑& & function disableOcx() {& & var form. = document.forms[0];& & for ( var i = 0; i < form. i++) {& & var element = form.elements[i];& & //部分元素可以编号 element.name 是元素自定义 name& & if (element.name != "auditEntity.auditContent"& & && element.name != "auditEntity.auditAutograph"& & && element.name != "auditEntity.auditTime"& & && element.name != "auditEntity.auditState"& & && element.name != "submitBtn"& & && element.name != "reset"& & && element.name != "id"& & && element.name != "processInstanceId"& & && element.name != "updateForm") {& & element.disabled = "true";& & }& & }& & }& & window.onload = disableO//当页面加载的时候执行此函数& & //取消不可编辑& & function noDisable() {& & var form. = document.forms[0];& & for ( var i = 0; i < form. i++) {& & var element = form.elements[i];& & element.disabled =& & }& & }& & QQ空间
百度搜藏更多& & Tags:js FORM表单 所有元素 不可编辑& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:javascript中负数算术右移、逻辑右移的奥秘探索& & 下一篇:html文本框提示效果的示例代码& & 相关文章文本框input聚焦失焦样式实现代码location.href语句与火狐不兼容的问题javascript.:文字不间断向左移动的实例代码如何在父窗口中得知window.open()出的子窗口关闭事件Javascript变量函数浅析javascript. cookies 设置、读取、删除实例代码javascript上传图片前预览图片兼容大多数浏览器Js如何判断客户端是PC还是手持设备简单分析用 javascript. 实现的点击复制代码javascript模拟的Ping效果代码 (Web Ping)& & 文章评论& & 最 近 更 新& & 通过js简单实现将一个文本内容转译成加密线路分流自动跳转代码;希望对大家有用!js下将字符串当函数执行的方法Javascript. 学习笔记 错误处理两个table之间相互移动数据Js注册协议倒计时的小例子js Flash插入函数免激活代码JavaScript. 自动分号插入(JavaScript. syjavascript. jq 弹出层实例关于Javascript. 的 prototype问题。& & 热 点 排 行& & js刷新页面方法大全清除网页历史记录,屏蔽后退按钮js中cookie的使用详细分析javascript深入理解js闭包JS鼠标事件大全 推荐收藏Javascript. 的addEventListener(js验证表单大全js 获取浏览器高度和宽度值(多浏js 字符串操作函数比较全的JS checkbox全选、取消全
说明:该文章系网友上传分享,若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.004 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益

我要回帖

更多关于 form 禁止自动提交 的文章

 

随机推荐