在bootstrap模式中验证输入文本

mka*_*kab 5 javascript jquery twitter-bootstrap twitter-bootstrap-3

我想在不使用任何框架的情况下在引导模式中验证表单.它实际上是一个简单的模态,只有一个输入文本和两个按钮"关闭"和"发送".用户应在输入框中键入他/她的名字,然后单击"发送".表单是使用方法发送的.

我想要做的是,如果用户没有在输入框中输入任何内容并单击"发送"按钮,则输入框应该有一个红色边框,而不是默认的蓝色边框.这是我的模态的代码:

<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <!--form-->

            <form class = "form-horizontal" id="myForm" method="post" action="test.php" role="form">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title">My modal</h4>
                </div>
                <div class="modal-body">
                    <p>
                        Please enter your name:
                    </p>
                    <br/>

                    <div class="form-group">

                        <div class="col-lg-12">
                            <label class="control-label" for="firstname">Name</label>
                            <input type="text" class="form-control required" id="firstname" name="firstname">
                        </div>
                    </div>

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    <button id="myFormSubmit" class="btn btn-primary">Send</button>
                </div>
            </form>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试使用javascript更改输入文本的类,has-error但它不会产生红色轮廓.当我点击发送它通过post方法而不是Here这是我的javascript代码发送空值:

    <script type="text/javascript">
        $('#myForm').validate({
            rules: {
                name: {
                    minlength: 1,
                    required: true
                },
            },
            highlight: function (element) {
                $('#firstname').removeClass('has-success').addClass('has-error');
            },
            success: function (element) {
                $('#firstname').removeClass('has-error').addClass('has-success');
            }
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里混合了很多东西.我仍然是bootstrap和javascript的新手.我怎样才能获得所需的红色轮廓?谢谢.

编辑:验证功能:

function validate() {
    var x = document.forms["myForm"]["firstname"].value;
    if (x == null || x == "") {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

Pla*_*lov 12

您需要更改元素的CSS类,而不是自身:input div.form-groupinput

HTML提交按钮点击后应该是这样的:

<div class="form-group has-error">
   <div class="col-lg-12">
      <label class="control-label" for="firstname">Name</label>
      <input type="text" class="form-control required" id="firstname" name="firstname">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

要实现此目的,请将JavaScript代码更改为:

<script type="text/javascript">
  $('#myForm').on('submit', function(e) {
    var firstName = $('#firstname');

    // Check if there is an entered value
    if(!firstName.val()) {
      // Add errors highlight
      firstName.closest('.form-group').removeClass('has-success').addClass('has-error');

      // Stop submission of the form
      e.preventDefault();
    } else {
      // Remove the errors highlight
      firstName.closest('.form-group').removeClass('has-error').addClass('has-success');
    }
  });
</script>
Run Code Online (Sandbox Code Playgroud)