我有一个如下的提交按钮。
<input type="submit"
name="btnDelete"
id="btnDelete"
value="Delete"
onclick="this.form.action='${pageContext.request.contextPath}/Country/DeleteMany'"/>
我按下时会导致表单操作发生变化。
但是,我需要在更改此操作之前调用另一个函数。另一个函数根据JavaScript的确认对话框返回一个布尔值。
我尝试了以下内容。
onclick="return confirmDeleteMuliple(); this.form.action='${pageContext.request.contextPath}/Country/DeleteMany'"
然而,该操作在提交时没有更改(当confirmDeleteMuliple()
返回true时)。
我尝试将更改操作的代码放在单独的JavaScript函数中,如下所示。
function deleteManyAction()
{
document.dataForm.action='${pageContext.request.contextPath}/Country/DeleteMany';
}
onclick
属性更改如下。
onclick="return confirmDeleteMuliple();deleteManyAction();"
然而,deleteManyAction()
函数从未被调用过。仅当从confirmDeleteMuliple()
移除函数onclick
时,它才有效。
如何以定义的顺序调用这两个函数?
表达式${pageContext.request.contextPath}
计算加载时的应用程序的上下文路径,如/Example
(解析此文件(JSP)时)。
答案 0 :(得分:1)
永远不会达到return
之后放置的代码。 return
基本上意味着停止工作并给我你所拥有的东西。
这应该做你想要的:
onclick="return submit();"
function submit(){
if(confirmDeleteMuliple()){
deleteManyAction();
return true;
}else{
return false; //Otherwise the form will be submitted anyway.
}
}
答案 1 :(得分:1)
尝试将代码(JS)保留在表示层(HTML)之外。我在我的JS文件中分配了所有的事件处理程序。尝试这种方法,我认为这将使您的代码:
$("#btnDelete").click(function() {
if ( confirmDeleteMuliple() ) {
this.closest("form").attr("action",
${pageContext.request.contextPath} + '/Country/DeleteMany');
# Here, returning true will allow the form submission to complete with the new
return true;
} else {
# This will stop the form from being submitted
return false;
}
});