button 与 input submit的区别

在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总是提交<button>和</button>之间的文字作为value值,而不理会button的value属性指定的值。非IE总是提交value属性的值,如果不指定这个值,则提交空字符串,完全不理会标签间包夹的文字。要用统一的逻辑判断哪个button被点击,就只能判断该button对应的get或post的数组成员是否存在(被定义)。

原文地址:https://www.cnblogs.com/guaiyutou/p/4218030.html