在bootstrap popover中如何防止表单提交?

我遇到了一个问题,希望有人能澄清一下。 我正在使用bootstrap popover来触发登录表单。 我想使用ajaxvalidation用户和密码,但我无法使用preventDefault()和stopPropagation()阻止表单事件中的默认提交事件。

找到下面的代码只是为了看到你可以帮助我,知道发生了什么。 提前致谢。

笔记:

1)popover触发器是id =“signin_popover_trigger”的元素2)popover内容是class =“signin_popover_content”中的html代码

HTML代码:

Sign in  

Javascript代码:

 $('.user_access_form').submit(function(event){ event.stopPropagation(); event.preventDefault(); //Validation code here }); $('#signin_popover_trigger').popover({ html: true, content: function(){ return $('.signin_popover_content').html(); }, placement: 'bottom', }); 

CSS代码

 .signin_popover_content { display: none; } 

事实是,如果表单没有放入popover,表单会被正确停止。

谢谢!!!

我刚刚发现了答案。 Bootstrap popover不允许向侦听器添加任何事件。 解决方法如下:

 $(document).on('submit', '.popover .user_access_form', function(event) { event.preventDefault(); //Code here }); 

感谢MrCode提供的答案。 干杯。

扩展我的评论:发生了什么是你正在分配事件处理程序,然后创建弹出窗口。 当Boostrap创建弹出窗口时,它会删除旧窗体,然后在DOM中创建一个新的窗体元素,因此任何以前的事件处理程序都会丢失。

您可以通过委派事件来解决它:

 $(document).on('submit', '.user_access_form', function(event){ event.preventDefault(); }); 

或者,只有在创建弹出窗口之后,您才可以等待分配事件处理程序。