【问题标题】:Form submission blocked by bootstrapValidator表单提交被 bootstrapValidator 阻止
【发布时间】:2015-09-30 13:47:33
【问题描述】:

当我尝试提交使用 bootstrapValidator() 验证字段的表单时遇到问题 -> 它没有提交,php 文件没有被执行(我知道,因为我尝试过不使用 booststrapValidator 并且它有效) . 有什么想法吗?

表格如下:

<form id="contactForm"  class="form-horizontal" role="form" action="contact_form.php" method="post">
      <div class="form-group">
        <label class="control-label col-sm-2" for="name">Name</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="name" name="name" placeholder="Name">
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="email">Email</label>
        <div class="col-sm-10"> 
          <input type="email" class="form-control" id="email" name="email" placeholder="example@domain.com">
        </div>
      </div>
      <div class="form-group"> 
        <label class="control-label col-sm-2" for="msg">Mesage</label>
        <div class="col-sm-10"> 
            <textarea class="form-control col-sm-10" id="msg" name="msg" placeholder=""></textarea>
        </div>
      </div>
      <div class="form-group">
        <label id="captchaOperation" class="control-label col-sm-2" for="captcha"></label>
        <div class="col-sm-10"> 
          <input type="text" class="form-control" id="captcha" name="captcha" placeholder="Answer">
        </div>
      </div>
      <div class="form-group"> 
        <div class="col-sm-offset-2 col-sm-10">
          <input type="submit" class="btn btn-primary" id="submit" name="submit" value="Send"></button>
        </div>
      </div>
</form>

【问题讨论】:

  • &lt;input type="submit" class="btn btn-primary" id="submit" name="submit" value="Send"&gt;&lt;/button&gt; remove &lt;/button&gt; 这是不必要的,但不会有任何区别,也要发布引导验证器代码

标签: php forms block submission bootstrapvalidator


【解决方案1】:

id="submit" name="submit"&lt;/button&gt; 中删除

<input type="submit" class="btn btn-primary" id="submit" name="submit" value="Send"></button>

&lt;form&gt;中添加data-toggle="validator"

<form id="contactForm" class="form-horizontal" role="form" action="contact_form.php" method="POST" data-toggle="validator">

所以完整的表格将是

<form id="contactForm" class="form-horizontal" role="form" action="contact_form.php" method="POST" data-toggle="validator">
    <div class="form-group">
        <label class="control-label col-sm-2" for="name">Name</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="name" name="name" placeholder="Name">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2" for="email">Email</label>
        <div class="col-sm-10">
            <input type="email" class="form-control" id="email" name="email" placeholder="example@domain.com">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2" for="msg">Mesage</label>
        <div class="col-sm-10">
            <textarea class="form-control col-sm-10" id="msg" name="msg" placeholder=""></textarea>
        </div>
    </div>
    <div class="form-group">
        <label id="captchaOperation" class="control-label col-sm-2" for="captcha"></label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="captcha" name="captcha" placeholder="Answer">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <input type="submit" class="btn btn-primary" value="Send">
            </button>
        </div>
    </div>
</form>

和引导验证器代码示例

$(document).ready(function(){
    $('#contactForm').bootstrapValidator({
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        excluded: [':disabled'],
        fields: {
            name: {
                validators: {
                    notEmpty: {
                        message: 'The Full Name field is required'
                    }
                }
            },
            email: {
                validators: {
                    notEmpty: {
                        message: 'The Email field is required'
                    }
                }
            },
            msg: {
                validators: {
                    notEmpty: {
                        message: 'The Message field is required'
                    }
                }
            },
            captcha: {
                validators: {
                    notEmpty: {
                        message: 'The Captcha field is required'
                    }
                }
            }
        }
    });
});

它会在验证后提交表单,实际原因表单在验证后未提交是id="submit" name="submit" inside submit 按钮,其中类型也是type="submit" (Fiddle with name & id = submit) 原因未知为什么 bootstrapvalidator 不提交表单,可能一个错误可能是它对如何处理 type="submit" id="submit" name="submit" 的输入感到困惑,因此要么删除 id="submit" name="submit" (Fiddle without name & id = submit),要么更改为与 type="submit" 不同的东西,例如 id="sub" name="sub" (Fiddle with name & id = sub)

【讨论】:

    【解决方案2】:

    id 和名称“提交”是问题之一,另一个问题是:

    $("#contactForm").submit(function(ev){
    ev.preventDefault();
    });
    $("#sbm").on("click", function(){
     var bootstrapValidator = $("#contactForm").data('bootstrapValidator');
     bootstrapValidator.validate();
    
    if(bootstrapValidator.isValid())
        //setTimeout(function(){$("#success").show();}, 300);
        error = true;
        $("#contactForm").submit();
    else return;
    });
    

    我试图捕获验证器的返回状态并阻止表单提交。 PS:我也尝试过不使用 preventDefault() 但根本没有成功,所以我删除了所有这些代码,现在它可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2018-11-07
      • 2020-10-06
      • 2017-02-10
      • 2016-02-20
      相关资源
      最近更新 更多