【发布时间】:2012-08-07 06:40:30
【问题描述】:
对于无法提供任何实际代码,我提前道歉,因为问题出现在当前私有的页面中:-/ 请多多包涵。
我有一个 HTML 表单。我将(专有)日历小部件附加到其中一个文本输入字段。当用户进入该字段时,会出现日历。在日历上有几个按钮(移动到上/下个月)。当用户点击这些按钮之一时,日历会相应地更新自己,而且 - 表单提交!除了日历本身和它所附加的文本输入字段之外,日历代码中没有任何内容,更不用说提交表单了!我将不胜感激有关以下任何问题的任何线索:
1) 在这种情况下,什么可能会提交表单?
2) 除了点击提交按钮或按回车键之外,一般会提交哪些表单? (特别是普通按钮会提交表单吗?在什么情况下?)
3) 作为一种解决方法,以防我无法解决这个问题,有没有办法完全禁用提交表单(然后在附加到提交键的事件处理程序中重新启用它)?
注意:除此之外,日历的行为正常 - 正常响应关键事件和日期本身的点击事件(不是按钮)。我在 Firefox 和 Chrome 上都试过这个,得到了相同的行为。我尝试使用 FireBug 一步一步地跟踪 click 事件处理程序,一切似乎都很正常 - 但在它完成的那一刻,表单被提交(并且页面重新加载)。该小部件使用 jQuery 1.7.2。任何理解和/或解决此问题的帮助将不胜感激!
【问题讨论】:
-
在日历按钮的 onclick 事件中,您需要调用
e.preventDefault()- 大多数按钮将提交表单/页面,除非您明确阻止该默认行为。如果这不起作用,请尝试e.stopPropagation()。 -
你不能创建一个SSCCE来证明这个问题?
-
@ŠimeVidas:他说的是专有的;我猜是他或他的公司制造的。
-
@Mark 这并不意味着它不能公开。毕竟,它是开源的,因为它是一个 JavaScript 脚本。
-
@ŠimeVidas:在这个意义上可能是“公共的”,但它可能不是我们熟悉的。但我想他可以自己回答:)
标签: javascript jquery html forms