我在一个网站上工作,基本上有一个表单,包括一个JS文件:http://assets.sprint.degreesearch.org/assets/defaults.js?1311179143
我想做的是动态地在表单提交上附加一个额外的函数(通过提交按钮上的onclick函数或通过覆盖在表单提交上触发的JS中包含的函数)。
问题是我不是很熟悉Prototype.js,我无法在表单提交上执行函数。当它在onclick上时,它确实会触发,但我相信它会立即被原型取消,并且它的执行在中途停止。
有问题的网站是http://sprint.degreesearch.org/collegefunnel网站的Step4,在Step4上,在按下提交时,我想运行一个JS函数,理想情况下需要大约200-300ms
如何解除与鼠标按下相关联的事件的绑定并在其前面插入动态脚本然后将默认绑定的内容绑定回
Prototype有一个stopObserving
方法来解除绑定事件。根据事件绑定的位置,您可以在表单提交或其他元素的鼠标事件上调用stopObserving
。
然而,我不认为这是真正的问题。当你说你想运行一个需要200-300ms的JS函数时,我感到困惑。所有的JavaScript都是同步的,所以它的执行时间是无关紧要的。我怀疑有一个未声明的要求,即所讨论的函数实际上是一个异步调用,可能在那段时间内不会返回。
在这种情况下,您真正需要做的是取消表单提交。表单提交可能以以下两种方式之一发生:要么是自然的表单提交,要么实际上触发了某种异步调用。
如果它是一个自然的表单提交,你可以绑定一个新的事件处理程序到表单的提交动作,并调用event.preventDefault()
来阻止浏览器从提交到服务器。然后,调用窗体上的.submit()
来再次启动它。