【问题标题】:Difference between Bootstrap versions in validation验证中 Bootstrap 版本之间的差异
【发布时间】:2016-03-18 02:46:09
【问题描述】:

我更新了我的 Bootstrap 版本,但现在我遇到了验证字段的问题。

2.3.4 版一切正常:

Bootstrap CSS on version 2.3.4

<form name="form" ng-app>
<div class="control-group" ng-class="{true: 'error'}[submitted && form.email.$invalid]">
    <label class="control-label" for="email">Your email address</label>
    <div class="controls">
        <input type="email" name="email" ng-model="email" required />
        <span class="help-inline" ng-show="submitted && form.email.$error.required">Required</span>
        <span class="help-inline" ng-show="submitted && form.email.$error.email">Invalid email</span>
    </div>
</div>

<button type="submit" class="btn btn-primary btn-large" ng-click="submitted=true">Submit</button>

但是对于最新版本,必填字段不再起作用,验证错误时没有红色字段等:

Bootstrap CSS on version 3.3.4

问题

如何更改代码以使这些字段像以前一样工作?

【问题讨论】:

  • 查看 Bootstrap 3 文档,您会发现您的 HTML 与新布局不匹配。例如,controls 现在应该是 form-group 并且每个输入都应该有这个类 form-control

标签: html css angularjs twitter-bootstrap


【解决方案1】:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form name="form" ng-app>
    <div class="form-group has-error" ng-class="{true: 'error'}[submitted && form.email.$invalid]">
        <label for="email">Your email address</label>
        <input type="email" name="email" class="form-control input-sm" ng-model="email" required />
        <span class="help-inline" ng-show="submitted && form.email.$error.required">Required</span>
        <span class="help-inline" ng-show="submitted && form.email.$error.email">Invalid email</span>
    </div>
    <button type="submit" class="btn btn-primary btn-large" ng-click="submitted=true">Submit</button>
</form>

这就是您的 HTML 在 Bootstrap 3 中的外观。 http://getbootstrap.com/css/#forms-control-validation

【讨论】:

  • 您的 sn-p 中缺少从红色变为蓝色的颜色。我将阅读文档并更新我的代码。这是我正在考虑的更大的工作,我有大约 10 种表格等着我:)
【解决方案2】:

自 2.x.x 版本以来,较新的 Bootstrap 版本中表单的工作方式发生了变化。如果您查看文档并进行比较,就会变得很明显。

有几个新类,例如 has-errrorhas-success 而不仅仅是 errorsuccess

此外,表单中的 input 需要有 form-control 类才能使其在 Bootstrap 3.x.x 中工作。

我已经更新了您的fiddle 并进行了少量更改以使其正常工作,但您绝对应该查看documentation 并更改您的 HTML 结构。

【讨论】:

  • 但是当您更新的小提琴中出现验证错误时,字段中没有验证或红色边框?我会检查文档...
  • 奇怪。 oi58.tinypic.com/243far7.jpg Chrome 作为网络浏览器。我将检查示例和文档并尝试解决这个问题。啊!你是在提交之后......我希望它也像实时一样。我的错。
  • @Sami 是实时的,你必须告诉 AngularJS 监听输入键的变化并添加相应的类 has-error has-success 等等..类似于 jquery 所做的.change()
  • @Vlad57 我想知道为什么它以前可以在旧的 Bootsrap 版本中使用。
【解决方案3】:

Working version with the latest Bootsrap + AngularJS

<form name="form" ng-app>

<div class="col-md-4" ng-class="{ 'has-error' : form.email.$invalid && !form.email.$pristine }">
    <label class="col-md-2 control-label">email:</label>
    <input type="email" name="email" class="form-control" ng-model="rma.Addressid.email" placeholder="email" required>
    <p ng-show="form.email.$invalid && !form.email.$pristine" class="help-block">Enter a valid email.</p>
</div>
    <hr/>
<button type="submit" class="btn btn-primary btn-large" ng-click="submitted=true">Submit</button>

【讨论】:

  • 您能否突出显示您所做的更改,以便其他发现此问题和答案的人受益?
  • 有那个jsfiddle,旧版本在哪里,新版本在它下面。除了标签和按钮之外,每一行基本上都有变化。 jsfiddle.net/sanurmi/f0h6kkww/5
猜你喜欢
  • 2015-12-13
  • 2012-12-07
  • 2011-06-24
  • 1970-01-01
  • 2015-08-08
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多