我有一个表单,用于验证用户的输入,当他们点击按钮时,表单就会被提交。
我的示例代码:
表格:
<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()
事件处理程序。
我怎样才能克服这个问题?
答案 0 :(得分:1)
如果我正确理解了您的问题,只需将.on()
- 处理程序绑定在<{1>} - 处理程序
.click()
但我并不觉得这是唯一的问题。