如何在jquery中解决这个问题?

时间:2014-11-17 15:48:18

标签: javascript jquery forms

我有一个表单,用于验证用户的输入,当他们点击按钮时,表单就会被提交。

我的示例代码:

表格:

<form>
...

   <div class="form-actions" id="saveButtons"> 
                    <button class="btn btn-primary" /><%=i18n.localize("save")%></button>
                    <%if(outputs.isPermitted){%><script> </script><a class="btn btn-info" id="publish_api" >Save & Publish</a>  <%}%>

                </div>
            </form>

点击按钮时,我会调用此jquery函数:

    $('#publish_api').click(function(e){
                $("body").on("api_saved", function(e){
                    $.ajax({
                        type: "POST",
                        url: "<%=site.context%>/site/blocks/life-cycles/ajax/life-cycles.jag",
                        data: {
                            action :"updateStatus",
...

   });
            $("#manage_form").submit();
        });

And form  input parameter validation happens in another js function:



var v = $("#manage_form").validate({
        submitHandler: function(form) {
        if(!validate_tiers()){
            return false;
        }


        $('#saveMessage').show();
        $('#saveButtons').hide();        
        $(form).ajaxSubmit({
            success:function(responseText, statusText, xhr, $form) {
                $('#saveMessage').hide();
                $('#saveButtons').show();                
                if (!responseText.error) {                
                    $( "body" ).trigger( "api_saved" );       
                } else {
...

现在我的问题是,因为我在 click()事件中注册了 .on()处理程序,如果用户点击按钮而未填写必填字段在正确填写表单并单击提交后,数据仍会发送到后端。

这是因为我在.on函数中注册了click()事件处理程序。 我怎样才能克服这个问题?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,只需将.on() - 处理程序绑定在<{1>} - 处理程序

之后即可克服它。
.click()

但我并不觉得这是唯一的问题。