使用表单外部的按钮提交表单并触发jQuery验证

时间:2012-01-14 08:07:52

标签: php javascript jquery validation

我正在使用jQuery验证插件,表单使用ajax来提交表单。我有一个浮动按钮栏,根据页面的用途生成页面按钮。这些按钮位于表单标记之外。我的表单的ID是帐户设置。在我的文件中。我已经有了这个:

$("#account-settings").validate({
        rules: {
              email: {email: true}
               },

         messages: {
                      email: {email: "Enter a valid email address."}
               },
    })

有一个名为savesettings的按钮可以保存表单的设置。这是点击事件:

$('#savesettings').click(function() {  

 if($('#account-settings').valid()){
    alert("Valid form");
}
else{
    alert("Not valid");
}
}

单击按钮时没有任何反应...所以,基本上,我显然没有正确使用插件,有人启发我吗?继续阅读文档,但我没有看到任何其他内容......

3 个答案:

答案 0 :(得分:2)

您需要在用户点击类似按钮时序列化表单。

$('#savesettings').click(function() {  

 var $as = $('#account-settings');

 if($as.valid()){

    $.post(
        /* your server page */
      , $as.serialize()
      , /* your callback function */
    );

  }

  else{
    alert("Not valid");
  }

});

我应该指出以这种方式提交表单时显而易见的可访问性陷阱,没有JavaScript的用户将无法使用它。

答案 1 :(得分:0)

如果您想使用该表单之外的任何按钮提交表单,则应使用trigger()函数,如下所示:

$('body').on('click', '#my-button', function(){
    $('#account-settings').trigger('submit');
});

您的验证插件应该正常运行。

答案 2 :(得分:0)

你的JS功能可以使用结束语。尝试类似:

$('#savesettings').click(function() {  
  if($('#account-settings').valid()){
    alert("Valid form");
  } else {
    alert("Not valid");
  }
});