Koubei UED

Just another WordPress weblog

说说回车键触发表单提交的问题 By 大米

%e8%af%b4%e8%af%b4%e5%9b%9e%e8%bd%a6%e9%94%ae%e8%a7%a6%e5%8f%91%e8%a1%a8%e5%8d%95%e6%8f%90%e4%ba%a4%e7%9a%84%e9%97%ae%e9%a2%98

我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此。比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键误操作在未完成表单填写的时候就触发了表单提交。

要控制这些行为,不需要借助JS,浏览器已经帮我们做了这些处理,这里总结几条规则:
1、如果表单里有一个type=”submit”的按钮,回车键生效。
2、如果表单里只有一个type=”text”的input,不管按钮是什么type,回车键生效。
3、如果按钮不是用input,而是用button,并且没有加type,IE下默认为type=button,FX默认为type=submit。
4、其他表单元素如textarea、select不影响,radio checkbox不影响触发规则,但本身在FX下会响应回车键,在IE下不响应。
5、type=”image”的input,效果等同于type=”submit”,不知道为什么会设计这样一种type,不推荐使用,应该用CSS添加背景图合适些。

实际应用的时候,要让表单响应回车键很容易,保证表单里有个type=”submit”的按钮就行。而当只有一个文本框又不希望响应回车键怎么办呢?我的方法有点别扭,就是再写一个无意义的文本框,隐藏起来。根据第3条规则,我们在用button的时候,尽量显式声明type以使浏览器表现一致。

做了一个demo列出了一些例子。

注:文章和demo于2009-2-2更新

Tags: , ,

14 Responses to “说说回车键触发表单提交的问题”

  1. 一瞬 说:

    漏了个

  2. 一瞬 说:

    input type=”image”

  3. fireplume 说:

    主要还是submit 和button之间的区别,
    另外,底下的回复框在firefox3下会被撑大~

  4. dang 说:

    总结的很详细,受益良多!…

  5. elizabb 说:

    原来如此~

  6. cloud 说:

    .net中这个问题很麻烦

  7. aoao 说:

    type=”image” 会带坐标提交

  8. 沙漠 说:

    type=”image” 会带坐标提交,后面会跟一个X=多少Y=多少的东西,这个很不爽.很多大的网站都有这样的问题.

  9. 汗蒸房 说:

    也有问题。

  10. wps 说:

    浏览器越来越多,网页设计标准化也难了,又是submit 又是button

  11. zhujjcn 说:

    N年前困扰我们的 搜索页 回车提交,不管一堆onsubmit函数的问题(还是提交两次),是否也在这里一并给个解答
    具体情况都快依稀了啊 呵呵

  12. cha369 说:

    ie下回车不会罢submit按钮作为一个变量提交,
    ff下会, 所以在服务端判断的时候不要以此为提交的依据,
    应当显性的重新声明一个判断的依据

  13. izyA 说:

    type=”image”会带上点击位置坐标提交, 只是因为很多人只是为了加张图就用type=”image”

Leave a Reply