http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/form.aspIf the form includes only one text box and the user presses ENTER, the onsubmit event fires. If the form has an INPUT type=submit element, it will appear as a button with a dark border, which indicates the user can press ENTER to submit the form. 如果表单仅包含一个文本框时用户按下回车键,onsubmit 事件将触发。如果表单有 INPUT type=submit 元素,该元素将会变为带有黑色边框,这意味着用户按下回车键即可提交表单。 也就是说,如果form中只有一个文本框,会直接触发onsubmit 事件,而不去执行INPUT type=submit 元素的onclick事件。
而后来再加一个<input>即两个<input>时会都触发了呢(button submit,automatic submit)?
只有一个<input>时
<input type="text" name="text1">
只触发一个(automatic submit)
2.
加一个<input>即
<input type="text" name="text1">
<input type="text" name="text2">
触发了两个(button submit,automatic submit)?
如果表单仅包含一个文本框时用户按下回车键,onsubmit 事件将触发。如果表单有 INPUT type=submit 元素,该元素将会变为带有黑色边框,这意味着用户按下回车键即可提交表单。
也就是说,如果form中只有一个文本框,会直接触发onsubmit 事件,而不去执行INPUT type=submit 元素的onclick事件。
我刚才做了测试,具体什么原因,我现在不能给出肯定的答案。
你把你的程序用Firefox浏览器测试,我怀疑是IE对JavaScript支持的方式不一样,Firefox支持JavaScript是正宗的。
多做几个测试,比如:Form里面添加<img .... /> <input type="radio" ... /> 或者 把最后的<input type="submit" ....> 修改成<input type="button" /> 然后测试在不同的内容怎么调用JavaScript我还在翻书,《JavaScript权威指南》 太厚了,一下子也找不出来正确答案....
if (event.keyCode == 13){
document.UserLogin.submit();
}
</SCRIPT> <area shape="circle" coords="23,40,24" href="#" onclick=javascript:document.UserLogin.submit();>UserLogin为你的form名
<input type="submit" value="submit" name="sub1" onclick="return onSub();">
去掉
也就是不要提交按钮然后,当表单内只有一个INPUT文本框时,你按回车,也会执行自动提交事件。
这是因为,只有一个输入控件的情况下,你按回车,毫无疑问就是应该要提交表单了。
但当有一个以上的输入控件时,这个默认就不能成立了,因为其它的输入控件未必是输入有效的状态嘛。
function keypress() {
if(event.keyCode == 13) {
document.getElementsByName("sub1")[0].click();
return false;
}
return true;
}
可以去掉,效果一样
<body onLoad="keypress()">
....
以后测试JavaScript最好用Firefox..
IE是为它的Jscript服务的...
还是象我刚才所说的:
IE为了满足对一个输入控件进行自动提交,实际上它就采取绕过SUBMIT按钮,直接提交了。
而当输入控件不只一个的时候,就不能应用那套默认机制,而必须通过SUBMIT按钮来进行提交,所以按钮的事件又好使了。
2. 没有submit或button时,
2.1 只有一个text框时,触发onsubmit;
2.2 有多个text框时,不触发onsubmit。opera的行为是第2条简化为(不管几个text框)总是触发onsubmit。ie最傻呆:1. 只有一个text框时,(不管有没有submit),直接触发onsubmit
2. 有多个text框时,触发submit上的onclick,其默认行为为触发onsubmit。显然,我们很容易推理出来:最早ie是没有对单个text框做处理的,后来要加上这个feature,于是以很粗陋的打patch的方式对单个text框做了特殊处理,结果就是如此了。
你们用其它的浏览器试试就知道结果了!
加上onkeypress就解决的问题觉得讨论的意义不大~~
如果大家不同意我的说法,有精力研究就当我没说!
确实很头疼,百思不得其解,看了大家的回复,原来有可能是这么回事
谢了
在页面再加一个<input style="display:none">就了事