2013-04-25 88 views
0

在这里,我有一个Jquery验证插件和Struts2的问题。当点击取消按钮时如何取消Jquery Validation submitHandler?

我在我的表单中有3个按钮,如下所示。

<td><s:submit type="button" value="Save" theme="simple" cssClass="valid" /></td> 
<td><s:submit type="button" value="Cancel" theme="simple" action="cancel" cssClass="cancel"/></td> 
<td><s:submit type="button" value="Submit" theme="simple" cssClass="valid"/></td> 

当表单被提交时,验证将使用jquery验证完成。表单成功提交后,我希望用户确认提交表单?

所以我用jQuery的Validate函数submitHandler。 但是,当我点击取消此submitHandler正在执行。点击取消按钮时,我不希望发生任何事情。这是JavaScript部分。

$(document).ready(function() { 

    $("#MyForm").validate({ 
    //Some validation rules 
     submitHandler: function(form) { 
     //this runs when the form validated successfully 
     //My code after submitting the form 
      alert("Hello"); 
     } //End of Submit Handler 
    }); 

}); 

我知道这将是一个简单的answer.Though请帮我找到它的人

+0

为什么struts2的被标记这个问题? – 2013-07-15 12:05:26

+0

因为我在struts2框架中实现这个应用程序。 – AndichamyGA 2013-07-17 11:18:42

回答

1

问题的根源是,你form包含三个submit按钮。即使每个人都有不同的value,插件也会触发每一个。

1)将取消按钮更改为type="reset"。该插件将忽略这种类型的输入(但是,HTML将清除表单数据)。

http://jsfiddle.net/hnyd2/

OR

2)将取消按钮form以外。布局将有所不同,但您可以使用CSS更精确地放置按钮。

http://jsfiddle.net/hnyd2/1/

OR

3)给它的form里面,但阻止使用jQuery的preventDefault()submit按钮的默认行为。您必须在按钮上放置一个id,以便您可以正确定位。

$('#cancel').click(function(e) { 
    e.preventDefault(); 
    // anything else to do on click 
}); 

http://jsfiddle.net/hnyd2/3/

+0

伙计..感谢您的回复。 1)如果我改变type =“reset”,那么struts2框架会抛出错误。 2)如果我移动表单之外的取消按钮,那么与它关联的动作类别无法正常工作..我的意思是动作被调用.. 你有什么建议吗? – AndichamyGA 2013-04-29 09:50:57

+0

@Andy,你可以尝试使用jQuery来阻止按钮的默认功能。看到我编辑的答案。 – Sparky 2013-04-29 14:19:13

+0

谢谢Sparky。让我试试你第三种选择..我希望它的作品..! – AndichamyGA 2013-05-02 10:53:08