2010-12-11 61 views
0

我有一个带有两个按钮,一个提交按钮和一个取消/关闭按钮的窗体。当用户点击提交时,使用http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/验证输入的数据。如果一切都通过验证,表单将使用jQuery/AJAX提交。这一切工作正常和丹迪。虽然我遇到了取消按钮的问题。我想要取消按钮来要求确认。如果用户选择继续,他们将被带到我选择的页面。如果他们决定不想取消,那么他们只是留在页面上。这是不工作的最后一部分。如何停止处理/提交使用jQuery AJAX提交的表单?

我的表单代码如下所示:

<form name="createPage" id="createPage" method="post" action="pager.php" class="ajax updateForm"> 
<input name="whatever" type="text" /> 
      <button type="submit" id="submitQuickSave" class="submitSave"><span>save</span></button> 
      <button type="submit" id="submitCancel" class="submitClose" onclick='confirm_close()'><span>close</span></button> 
</form> 

我现在取消脚本如下所示。如果用户确实想要取消,我解除表单提交的绑定,以便不执行验证。然后表单继续提交并在action属性中包含cancel作为参数。我处理取消服务器端并引导用户进入新页面。

function confirm_close() 
{ 
var r=confirm("All changes since your last save operation will be discarded."); 
if (r==true) 
    { 
    $(".ajax").unbind("submit"); 
    } 
else 
    { 

    } 
} 

我找不出要在'else'参数中放置什么。会发生什么是如果用户取消取消(即返回false),那么表单仍会尝试提交。我无法阻止它。我试图从该网站几件事情和其他人没有成功:
event.stopImmediatePropogation
.abort()

任何想法?基本上,我怎样才能让取消/关闭按钮正常工作?

回答

3

考虑separating your JavaScript from your HTML。考虑到这一点,你可以写的处理程序为您的单击事件你试图拦截这样的:

$("button#cancel").click(function($event) { 
    var r = confirm("All changes since your last save operation will be discarded."); 
    if (r) { 
     $(".ajax").unbind("submit"); 
    } 
    else { 
     $event.preventDefault(); 
    } 
}); 

你将不得不调整你的HTML,并添加id属性为cancel按钮:

<button id="cancel" type="submit" value="cancel">Cancel</button>

这里举例:http://jsfiddle.net/wvFDy/

希望帮助!

+0

宾果。非常感谢。 – technoTarek 2010-12-11 20:04:28

0

我相信你只是

return false; 

让我知道这是否正常工作。

+0

不幸的是,ajax提交仍然处理。 – technoTarek 2010-12-11 20:05:13