javascript - Bootstrap 表单验证在不需要输入时以绿色突出显示标签文本?

标签 javascript html twitter-bootstrap validation bootstrap-4

我的 Bootstrap 4 form validation 发生了一件奇怪的事情当表单被验证时,有两个单选按钮的标签前景被更改为绿色。如果表单无效,标签不会变为红色。无论哪种方式,它们都应该保持黑色前景,因为单选按钮输入没有像我的其他表单元素那样关联的 required 属性。为什么它们会变成绿色,我如何防止这两个实体发生这种情况或停止表单验证?

index.html

<form id="signup-form" novalidate>

<div class="form-group">
  <h1>Sign Up</h1>
  <p>Use this form to enter your name and email to sign up.</p>
</div>

<!-- Name -->
<div class="form-group">
  <div class="row">
    <div class="col">
      <label for="firstNameInput">Name</label>
      <input type="text" class="form-control" id="firstNameInput" placeholder="First name" required>
      <div class="valid-feedback">
        Looks good!
      </div>
    </div>
    <div class="col">
      <label for="lastNameInput">Last</label>
      <input type="text" class="form-control" id="lastNameInput" placeholder="Last name" required>
      <div class="valid-feedback">
        Looks good!
      </div>
    </div>
  </div>
</div>

<!-- Email -->
<div class="form-group">
  <label for="emailAddressInput">Email address</label>
  <input type="email" class="form-control" id="emailAddressInput" aria-describedby="emailHelp" placeholder="name@example.com" required>
  <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
  <div class="invalid-feedback">
    Please provide a valid email.
  </div>
</div>

<!-- Options -->
<div class="form-group">
  <div class="form-check">
    <input class="form-check-input" type="radio" name="Radios" id="type1RadioButton" value="option1" checked>
    <label class="form-check-label" for="type1RadioButton">
      Type 1 user
    </label>
  </div>
  <div class="form-check">
    <input class="form-check-input" type="radio" name="Radios" id="type2RadioButton" value="option2">
    <label class="form-check-label" for="type2RadioButton">
      Type 2 user
    </label>
  </div>
</div>

<!-- Submit Button -->
<div class="form-group">
  <a href="#" class="btn btn-primary" id="submitButton" type="submit">Submit</a>
</div>

</form>

script.js

$(document).ready(function() {
$("#submitButton").click(function() {

  //Fetch form to apply custom Bootstrap validation
  var form = $("#signup-form")
  alert(form.prop('id')) //test to ensure calling form correctly

  if (form[0].checkValidity() === false) {
    event.preventDefault()
    event.stopPropagation()
    }
    form.addClass('was-validated')
  })
})

结果

表单验证前

enter image description here

表单验证后

enter image description here

最佳答案

当使用 HTML5 验证表单时,:valid 状态(或 :invalid 验证失败)应用于所有表单输入。我不知道有什么方法可以防止 :valid 状态应用于特定输入。

一旦 :valid 被应用到输入,Bootstrap 有这个 CSS 使标签变成绿色...

.was-validated .form-check-input:valid~.form-check-label {
    color: #28a745;
}

要覆盖 Bootstrap 应用的绿色样式,请在标签上使用 text-dark 类。这样,标签将始终为黑色,而不是绿色(:有效)或红色(:无效)。

https://www.codeply.com/go/gvR4ArUPKL

  <div class="form-check">
       <input class="form-check-input" type="radio" name="Radios" id="type2RadioButton" value="option2">
       <label class="form-check-label text-dark" for="type2RadioButton">
          Type 2 user
       </label>
  </div> 

关于javascript - Bootstrap 表单验证在不需要输入时以绿色突出显示标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815128/

相关文章:

javascript - .off()/.on() jQuery 事件处理程序绑定(bind)组合的效率

javascript - 想要在 js 越过某个位置时更改设置

javascript - jQuery 库干扰导航栏和可过滤投资组合的 Javascript 小问题 - bootstrap 3

javascript - Google BigQuery通过API访问公共(public)数据集

javascript - 返回操作数之一的 boolean 运算符

javascript - 在什么样的代码中 `typeof NaN` 是 'number' 才有意义

c# - 如何获取此字符串中标签的 href 属性?

javascript - 使用内联脚本时未定义动态加载的 jQuery

html - 良好边距和 100% 宽度的 Bootstrap 代码

javascript - Bootstrap 子模态打开时触发父模态打开事件