我有一个围绕包装器构建的页面,该包装器具有一些非常明确的逻辑。包装后的表单底部有一个保存按钮,如下所示:
<form>
... my page goes here...
<input id="submitBtnSaveId" type="button" onclick="submitPage('save', 'auto', event)" value="Save">
</form>
这不能改变...
现在,我正在将一些 javascript 编写到加载到“......我的页面在这里......”的页面中。代码加载良好并按预期运行。它围绕表单元素做了一些工作,我什至注入了一些页面验证。这就是我卡住的地方。如果验证失败,我正在尝试“拦截”onclick 并阻止页面调用“submitPage()”。我正在使用prototype.js,所以我尝试了所有这样的变体和组合:
document.observe("dom:loaded", function() {
Element.observe('submitBtnSaveId', 'click', function (e) {
console.log('Noticed a submit taking place... please make it stop!');
//validateForm(e);
Event.stop(e);
e.stopPropagation();
e.cancelBubble = true;
console.log(e);
alert('Stop the default submit!');
return false;
}, false);
});
没有什么能阻止“submitPage()”被调用!观察实际上起作用并触发控制台消息并显示警报一秒钟。然后“submitPage()”启动,一切都再见了。我已经删除了附加到 Firebug 中按钮的 onclick,并且我的验证和警报都按预期工作,所以它让我认为传播并没有真正停止 onclick?
我错过了什么?