使用jsp表单调用js函数

时间:2018-07-09 02:21:46

标签: javascript jquery spring-mvc jsp

所以我有一个看起来很简单但无法弄清楚该怎么做的问题。 我正在尝试调用JavaScript方法usign jsp形式,如下所示:

<div class="form_user">
        <form:form id="coolForm" onSubmit="return functionToCall()" modelAttribute="userModel">

            <form:input type="hidden" id="tokenForgot" name="tokenForgot" path="tokenForgot" />
            <form:input type="password" class="form-control" name="Password" path="Password" id="pwd" placeholder="password"/>
            <form:input type="password" class="form-control" name="password2" path="password2" id="confirmpwd" placeholder="Confirm password"/>

            <button id="coolButton" >Submit</button>
        </form:form>
      </div>

该表单转到JS方法 functionToCall 并执行所需的操作(最后将显示一个对话框,然后进行重定向)。事情是,在JS方法之后,它在浏览器上显示错误,提示 不支持POST方法 。显然,JSP默认情况下会添加一个 action method 属性。

我的问题是,有没有办法阻止JSP执行此操作?或任何解决方法?我可以只使用<form>来完成,但是我需要JSP提供的modelAttribute。

编辑1: 这是JS方法:

function functionToCall() {

var userForm = $("#coolForm").serialize();

var someService = new SomeService();

var result = someService.functionToCallPOST(userForm );

if (result.worked) {

    $("#dialogUser").dialog("open");
    $("#dialogText").text("Congratulations");
}
else {
    if (result.mensaje == "ERROR") {
        $("#dialogUser").dialog("open");
        $("#dialogUser").text("Error");
    }
    else {
        $("#dialogWarning").dialog("open");
        $("#dialogoTextW").text("enter your data again");
    }
}

}

functionToCallPOST 方法只是直接AJAX调用控制器

1 个答案:

答案 0 :(得分:0)

您的函数functionToCall()不返回任何内容,因此您的表单将被提交。尝试return false

function functionToCall() {

var userForm = $("#coolForm").serialize();

var someService = new SomeService();

var result = someService.functionToCallPOST(userForm );

if (result.worked) {

    $("#dialogUser").dialog("open");
    $("#dialogText").text("Congratulations");
    return true;
}
else {
    if (result.mensaje == "ERROR") {
        $("#dialogUser").dialog("open");
        $("#dialogUser").text("Error");
    }
    else {
        $("#dialogWarning").dialog("open");
        $("#dialogoTextW").text("enter your data again");
    }
    
}
return false;
}