这里不讨论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值与之间的文字设置为相同的值。
阅读(1565) | 评论(0) | 转发(0) |