错误处理程序上的引导验证器不起作用

Posted

技术标签:

【中文标题】错误处理程序上的引导验证器不起作用【英文标题】:Bootstrap validator on error handler not working 【发布时间】:2018-06-20 23:32:35 【问题描述】:

我在我的 asp.mvc 5 项目中的 ajax 表单上使用引导验证器:

$('#formID').bootstrapValidator(
            feedbackIcons: 
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            ,
            fields: 
                ddd: 
                    validators: 
                        notEmpty: 
                            message: 'Campo requerido'
                        
                    
                ,
                rede: 
                    validators: 
                        notEmpty: 
                            message: 'The amount is required'
                        
                    
                ,
                rede: 
                    validators: 
                        notEmpty: 
                            message: 'The color is required'
                        
                    
                ,
                tipo: 
                    validators: 
                        notEmpty: 
                            message: 'The size is required'
                        
                    
                ,
                obs: 
                    validators: 
                        notEmpty: 
                            message: 'The size is required'
                        
                    
                
            
        ).on('error', function (e) 
            e.preventDefault();
        );

一切正常,但点击提交后,仍然会提交:

@using (Ajax.BeginForm("InserirChamado", "ChamadoLLPP", null, new AjaxOptions  HttpMethod = "Post", OnSuccess = "FuncSucesso", OnFailure = "FuncError" , new  @id = "formID" ))

preventDefault()、stopPropagation() 和 return false 将不起作用。如何让它停止提交?

【问题讨论】:

我认为错误事件名称是err.form.bv 而不是error 【参考方案1】:

使用error.form.bv 和/或success.form.bv 处理程序来处理此示例给出的表单验证错误(请参阅event handling 作为参考):

$('#formID').bootstrapValidator(
     feedbackIcons: 
         valid: 'glyphicon glyphicon-ok',
         invalid: 'glyphicon glyphicon-remove',
         validating: 'glyphicon glyphicon-refresh'
     ,
     fields: 
         field1: 
            validators: 
                 notEmpty: 
                    message: 'This field cannot be empty'
                 
            
         ,

         // other field validators
    
 ).on('error.form.bv', function (e) 
      e.preventDefault();

      // prevent form submission if preventDefault() not working
      $('#formID').submit(false);

      // other validation error handlings

 ).on('success.form.bv', function (e) 
      e.preventDefault();

      // other stuff

      $('#formID').bootstrapValidator('defaultSubmit');
 );

此外,您可以添加 error.field.bvstatus.field.bv 处理程序来禁用/启用提交按钮功能:

$('#formID').bootstrapValidator( 

    // validation settings, cut for brevity

).on('error.field.bv', function(e, data) 
    data.bv.disableSubmitButtons(true); // Disable submit button
).on('success.field.bv', function(e, data) 
    data.bv.disableSubmitButtons(false); // Enable submit button
);

【讨论】:

以上是关于错误处理程序上的引导验证器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

烧瓶上的 HTTP 摘要身份验证对我不起作用

使用 Jquery 时引导验证不起作用

DatePicker 在引导程序 4 上不起作用

为啥引导程序不起作用,尽管我已经加载了它等(Django 项目)?

左右引导填充不起作用

引导验证(成功)后,表单使用默认方法而不是 ajax 提交。 e.preventDefault() 不起作用?