javascript - Bootstrap addClass 在表单中不起作用

标签 javascript jquery html css twitter-bootstrap

在长期休假后,我又回到了 Web 开发领域,我正在使用 Bootstrap 并创建一个简单的联系表单。如果验证出现错误,我想添加几个类以使表单元素变成红色并在输入中放置小十字。

我使用了 Bootstrap 站点中的示例,并且它运行良好。一旦我将内容放入表单中,addClass 就不会粘住。输入闪烁红色并返回到灰色边框。我已经剥离了整个 html 以检查它是否是我所做的其他任何事情,并将错误范围缩小到标签。

非常感谢任何帮助。 PS 这是我的第一篇文章,如果我错过了任何内容,请道歉

<html>
    <head>
        <title>Form</title>
        
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
        
        <style type="text/css">
        
            #emailError{
                
                display: none;
            }
        
        </style>
        
    </head>
    <body>
        <div class="container">
          <form> 


            <div id="emailDiv" class="form-group">
              <label class="form-control-label" for="inputDanger1">Input with danger</label>
              <input type="text" class="form-control" id="email">
              <div class="form-control-feedback" id="emailError">Sorry, that username's taken. Try another?</div>
              <small class="form-text text-muted">Example help text that remains unchanged.</small>
            </div>

            <div class="form-element">
                <input type="submit" value="Sign Up" id="submitBtn">
            </div>
           </form>  
        </div>
        
                <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
        
        <script type="text/javascript">
            

            $("#submitBtn").click(function(){
                
                $("#emailError").show();
                $("#emailDiv").addClass("has-danger");
                $("#email").addClass("form-control-danger");
            });
            
        </script>
    
    
    </body>
</html>

最佳答案

就像@AlonEitan所说,您需要禁用表单的默认操作,即提交表单并重新加载页面。您可以使用 e.preventDefault()return false 禁用该操作。如果发现错误,您可以有条件地禁用它,也可以默认禁用它,然后在表单验证后手动提交。这是一个例子。

$("#submitBtn").click(function(e){
  e.preventDefault();
  if (there are errors) {
    $("#emailError").show();
    $("#emailDiv").addClass("has-danger");
    $("#email").addClass("form-control-danger");
  } else {
    $('#formId').submit();
  }
});

关于javascript - Bootstrap addClass 在表单中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575968/

相关文章:

javascript - 无法隐藏和显示

javascript - 代码 Playground 中的多个 js 文件

javascript - Dart JSONP 回调错误

jquery - 通过回发持久化 CSS 更改

jquery - 使用 jquery 使 div 在用户滚动后出现

javascript - 如何使用javascript解析xml键名及其值?

html - CSS 网格中的响应 block 元素必须位于位置 : fixed

javascript - 生成列表中没有的5位随机码

javascript - 使用 4 个值和一个按钮求和

c++ - 用 C++ 解析网站数据