Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482260
  • 博文数量: 95
  • 博客积分: 2117
  • 博客等级: 大尉
  • 技术积分: 2301
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-16 21:10
个人简介

辽宁铁岭人,现居大连。1970年生。 先后供职于 中国国际海运网、大连学堂科技、大连华仁视线网络科技有限公司、大连中科海云科技有限公司,任职技术总监。 精通PHP、JAVA、Javascript、HTML、CSS等网络编程技术及Linux操作系统。 精通面向对象编程、设计模式、重构及互联网产品设计。

文章分类

全部博文(95)

文章存档

2013年(31)

2012年(2)

2011年(34)

2010年(25)

2008年(3)

分类: 系统运维

2010-12-18 21:37:54

这里不讨论button标签和input button及input sumbit在界面外观面表现上的差异,仅讨论其在浏览器与服务器的交互行为的差异。

因为IE与其它浏览器在实际行为中有着很大的不同,下文讨论了不同的浏览器行为,其它浏览器测试了firefox3.6、chrome、Opera,基本涵盖了主流的引擎。

在IE中,button标签与input button有近乎相同的行为,如果不为它指定脚本的话,它什么也不做。
在非IE中,button与input submit有相近的行为,会提交表单。
如果在IE中为button指定type=submit,则其表现也会与input submit相近。

不过当button具有提交行为时(包括在非IE中什么也不指定的情况和在IE中指定了type=submit的情况),它还是与input submit有着很有意思的区别:一个form中有两个这样的button,在提交时只会提交被点击的button的值,而不会提交未点击的button的值。而如果一个form中有两个input submit,不管点击哪个,两个input submit的值都会被提交!

利用这种差别,可以在服务器端针对点击不同的button,产生不同的回应。为多个button取不同的名字,再为不同的情况写下不同的程序段,检测哪个名下的值被提交了,就可以知道点击了哪个button,进而决定调用哪个程序段。

在提交button的值时,两大类浏览器的表现也有所不同,IE总是提交之间的文字作为 value值,而不理会button的value属性指定的值。非IE总是提交value属性的值,如果不指定这个值,则提交空字符串,完全不理会标签间 包夹的文字。要用统一的逻辑判断哪个button被点击,就只能判断该button对应的get或post的数组成员是否存在(被定义),或者将button的value值与之间的文字设置为相同的值。
阅读(1571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~