当Firefox 21绑定到angularjs模型时,Firefox 21会在必需的选择框周围绘制红色边框。
<select ng-model="color" ng-options="c.text for c in colors" required>
<option value="">-- choose color --</option>
</select>
有没有办法让Firefox在选择(或不选择)项目后验证输入?
答案 0 :(得分:15)
要解决此问题,您可以禁用表单仅为原始状态时所需的样式:
.ng-pristine .ng-invalid-required {
box-shadow: none;
}
用户输入无效数据后(ng-pristine类已更改为ng-dirty),box-shadow
将再次显示b / c此规则将不再适用。
答案 1 :(得分:5)
这实际上与AngularJS无关,但它是一个可以用CSS控制的浏览器功能。
请看一下这个MDN-Doc:https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid和这个问题:Firefox 4 Required input form RED border/outline
使用此CSS,Firefox似乎与Chrome相同:
select:invalid {
box-shadow: none;
}
答案 2 :(得分:2)
@klamping:您的解决方案有点可行,但是:只要您开始输入另一个字段,您的字段就会获得红色阴影(因为form.ng-pristine
不再存在)。< / p>
更好的方式:
.ng-untouched.ng-invalid-required { box-shadow:none; }
缺点:当用户提交表单而没有单击此字段时,不会显示红色阴影(但弹出工具提示 显示为)。
@DanEEStar:仅当AngularJS 存在时才会出现此问题。您的解决方案当然有效,但完全打破了红色突出显示(即表单提交后)。
我在这里为AngularJS创建了一个错误报告: https://github.com/angular/angular.js/issues/12102
示例:
<div ng-app>
<form>
<input type="text" ng-model="a" required>
</form>
</div>
答案 3 :(得分:2)
Thomas Landauer的解决方案有点工作:),但只要您点击/聚焦该字段,字段阴影就会再次变为红色,
我建议使用:
.ng-pristine.ng-invalid-required { box-shadow:none; }
答案 4 :(得分:2)
对于angular2,这是:
.ng-pristine.ng-invalid {
box-shadow: none;
}
答案 5 :(得分:1)
要完全删除它,请在css中输入:
:-moz-ui-invalid:not(output) {
box-shadow: none;
}
答案 6 :(得分:0)
当我在表单外使用选择框时,我遇到了同样的问题。当我这样做时问题得到解决:
<form novalidate>
<select>
<option value=""></option>
</select>
</form>
我认为这是一个浏览器的东西,与angular没有任何关系?