【发布时间】:2022-01-12 22:13:44
【问题描述】:
我是一名后端开发人员,最近继承了几个遗留的 Apache Tapestry 系统。我在 Tapestry 方面的技能是我对 javascript 媒体的了解。
我想在提交之前禁用提交按钮以避免多次提交。 一个很简单的
$(document).ready(function () {
$("#form").submit(function () {
$("#submitbutton").attr("disabled", true);
return true;
});
});
因为提交事件是在 Tapestry 进行客户端验证之前传播的,所以我可能会在验证失败的 submint 尝试中禁用按钮。
在this 问题上,我了解到Tapestry 也传播自己的事件,如果我可以在tapestry:formprocesssubmit 上收听,那可能会解决我的问题。
我有我的CreateContract.tml 文件,其中包含已经工作的表单、字段和按钮,我有我的CreateContract.java 文件
@Import(library = {
"context:js/jquery.mask.min.js",
"context:js/maintain-contracts.js",
"context:js/zone-overlay.js"},
stylesheet = "context:layout/zone-overlay.css")
还有我的maintain-contracts.js 文件
$(document).ready(function () {
$("#form").on('tapestry:formprepareforsubmit', function () {
console.log("I want to arrive here!");
});
});
但它不起作用。 在this 邮件列表线程上,我看到人们讨论非常相似的问题,但他们以不同的方式倾听事件,我不太了解。
我应该在初始化器中创建监听器吗?
我将事件称为'tapestry:formprepareforsubmit' 而不是Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT,因为在我的maintain-contracts.js 和我的控制台上,Tapestry 变量都是空的 - 为什么会这样?
.on 与 .bind 与 .observe 三分法呢?
first links 的问题已使用ProptypeJS Class.create 解决,但我认为我无权访问。
我是不是搞错了?
谢谢,感谢您的帮助。
【问题讨论】:
标签: javascript jquery tapestry