2012-04-12 280 views
0

我有一个原本为$(form).submit()工作的功能。我不得不修改它在$("#savebutton").click()上工作,因为主视图中已经有一个form.sumbit()函数。唯一的问题是当按钮被点击并且状态有效时,表单停止提交。 旧代码Jquery无法正常工作

$(document).ready(function() { 
    $("form").submit(function (e) { 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "ClientChoices")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data); 
      }, 
      cache: false 
     }); 
    }); 
}); 

function showMsg(hasCurrentJob) { 
    if (hasCurrentJob == "True") { 
     alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
     return false; 
    } else { 
     $("form").unbind('submit').submit(); 
    } 
} 

CurrentCode

$(document).ready(function() { 

    $("#saveButton").click(function (e) { 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "Shared")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data); 
      }, 
      cache: false 
     }); 
    }); 

    function showMsg(hasCurrentJob) { 
     if (hasCurrentJob == "True") { 
      alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      return false; 
     } else { 
      $("form").submit(); 
     } 
     return true; 
    } 
}); 

更新(仍然没有工作)

$(document).ready(function() { 

    $("#saveButton").click(function (e) { 
     if ($(e.currentTarget).data('shouldSubmit')) return; 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "Shared")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data, e); 
      }, 
      cache: false 
     }); 
    }); 

    function showMsg(hasCurrentJob, e) { 
     if (hasCurrentJob == "True") { 
      alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      return false; 
     } else { 
      $(e.currentTarget).data('shouldSubmit', true); 
      $("#saveButton").click(); 
      $(e.currentTarget).data('shouldSubmit', null); 
     } 
     return true; 
    } 
}); 

回答

1

This answer使用可能工作的技术。基本上再次以编程方式点击相同的按钮,并使用一个标志来确定它是否在确认方法中被点击(在您的案例中为showMsg)。

+0

我正在努力追踪,但确实做出了尝试。将张贴在上面。请让我知道,如果你看到任何东西。 – 2012-04-12 16:25:09

+0

@atbyrd,我没有看到你的更新版本有什么明显的错误。我建议你尝试用调试器来完成它。 – Joe 2012-04-12 17:01:58