美好的一天,
以下是我的jsp代码:
<s:form beanclass="c.c.i.c.app.profile.ui.ChangePasswordAction" method="post" name="form1">
<!-- some others code here -->
<sx:row cssClass="button_row">
<sx:input name="updatePassword" image="submit"/>
</sx:row>
</s:form>
这是我的jquery
:
<script type="text/javascript">
$(':input[name=updatePassword]').click(function() {
var answerProceed = confirm("Do you wish to proceed with the changes?");
if( answerProceed ){
var form = $("form[name=form1]");
form.attr("action", '<s:url beanclass="c.c.i.c.app.profile.ui.ChangePasswordAction" event="update"/>');
form.submit();
} else {
return false;}
});
</script>
我们可以看到,在jQuery中,它将触发update
的{{1}}事件。
但是,目前我有一个问题,有时它会触发2次,但并非总是发生,但是发生率约为50%。
以下是我从应用程序日志中获得的触发日志:
ChangePasswordAction
有人知道代码有什么问题吗?
答案 0 :(得分:1)
如果表单中的<input/>
是type="submit"
的表单,则在提交表单之前要检查确认是否需要使用preventDefault()
。
在这种情况下,您可以将e
作为Event
的实现参数,例如MouseEvent
作为$(':input[name=updatePassword]').click(function(e) { // <-- e implements Event
e.preventDefault(); // <-- prevent the submit of the form
var answerProceed = confirm("Do you wish to proceed with the changes?");
if (answerProceed) {
var form = $("form[name=form1]");
// var form = e.currentTarget.form; you can do this
// var form = this.form; or you can do this, "this" is implicit clicked element
form.attr("action", '<s:url beanclass="c.c.i.c.app.profile.ui.ChangePasswordAction" event="update"/>');
form.submit();
}
else {
return false;
}
});
的实现参数(由于 click 事件)进行传递。
例如:
.form
您可以通过对元素执行version: "2.4"
services:
nginx:
image: nginx:1.12.1
ports:
- "443:443"
- "80:80"
(...)
my-service:
(...)
networks:
default:
external:
name: my-network
来访问元素的形式,请参见
HTMLSelectElement.form
查看