【发布时间】:2017-06-02 02:18:09
【问题描述】:
我是 Angular 新手,所以请耐心等待。我有一个带有dropdown、textbox 和button 的表格。在表单生效之前,用户必须从下拉框中选择一个选项并在文本框中输入一个值。
<form name='personDataSourceForm' novalidate ng-submit='personDataSourceForm.$valid && PersonCtrl.SaveDataItem()'>
<span>Invalid: {{personDataSourceForm.$invalid}}</span><br />
<span>valid: {{personDataSourceForm.$valid}}</span>
<div class="input-group">
<div class="input-group-addon">
<select class="form-control input-sm" required ng-model='PersonCtrl.sp.person.newItem.dataType' ng-options='opt as opt.text group by opt.dataType for opt in PersonCtrl.DataItemTypes'>
<option value="" disabled selected>Choose...</option>
</select>
</div>
<input type="text" class="form-control input-sm" ng-model='PersonCtrl.sp.person.newItem.value' required>
<div class="input-group-btn">
<button class="btn btn-default btn-sm" ng-class="{ 'btn-success' : PersonCtrl.sp.person.newItem.dataType.dataType && PersonCtrl.sp.person.newItem.value }" type="submit">Save</button>
<button class="btn btn-link btn-sm" type="button" ng-click="PersonCtrl.StopAddItem()">Cancel</button></div>
</div>
</form>
我快速添加了 2 个 span 来显示验证状态。当两者都为空时,表单会显示invalid,这是有道理的。
只要我在文本框中输入一个值,即使dropdown 仍未更改,表单也会突然有效。
为什么我的dropdown 没有得到验证?我什至试过这个解决方案AngularJS Dropdown required validation
【问题讨论】:
-
无法重现您的问题。你能在小提琴中重现同样的问题并分享吗?
-
编辑:当我将
selected更改为ng-selected="selected"时,问题似乎得到了解决。仍在试图理解为什么.. -
ng-selected = "selected" 就像从您的选项中删除选择一样,因为如果变量
selected不在范围内,它将被解析为false。 -
谢谢。我仍在努力解决这个问题。因此,如果我想确保用户选择第一个默认选项以外的其他内容,那么我可以将
ng-selected留在其中,如果未选择任何内容,它应该始终返回 false? -
只要您的选项有 value="",如果用户选择该选项,您的表单应该是无效的。所以最好像
<option value="" default>Choose...</option>一样使用它。
标签: angularjs html validation select