AngularJS输入表单验证没有'当它's模型的更改
AngularJS input form validation doesn't fire when it's model changes
我正在尝试获取一些表单输入,以验证它们的模型是否/何时更新。目前,删除原始类的唯一方法是手动在输入框中键入。
Fiddle:http://jsfiddle.net/TgR7A/在小提琴中,如果你点击"切换",2个输入(其中一个总是隐藏的)通过它们的模型填充内容,但表单输入保持原始。我知道这是AngularJS处理表单输入的方式,但我希望有一个变通方法(a.K.a hack!),允许验证输入。
HTML:
<div ng-app>
<div ng-controller="toggleCtrl">
<h1>{{ title }}</h1>
<form novalidate class="css-form" name="swtichForm">
<label>Input</label>
<input type="text" name="one" class="one" ng-show="input_show=='one'" ng-model="one" required />
<input type="text" name="two" class="two" ng-show="input_show=='two'" ng-model="two" required />
<p ng-click="toggle()">Toggle</p>
</form>
</div>
CSS:
.one {
border-color: blue;
}
.two {
border-color: yellow;
}
.css-form input.ng-invalid {
background-color: #FA787E;
}
.css-form input.ng-valid {
background-color: #78FA89;
}
.css-form input.ng-pristine {
background: #fff;
}
JS:
function toggleCtrl($scope) {
$scope.title = "Input toggle";
$scope.input_show = "one";
$scope.toggle = function () {
$scope.one = 'hello';
$scope.two = 'world';
$scope.input_show = ($scope.input_show == 'one' ? 'two' : 'one');
}
}
您可以在这里找到关于Stack Overflow的很好的解释。
不幸的是,尽管有$setPristine()
函数,但没有$setDirty()
函数。正如stevuu所建议的,解决问题最不难看的方法是用新值调用$setViewValue()
,然后强制视图用$render()
:更新
$scope.toggle = function () {
$scope.switchForm.one.$setViewValue('hello');
$scope.switchForm.two.$setViewValue('world');
$scope.switchForm.one.$render();
$scope.switchForm.two.$render();
$scope.input_show = ($scope.input_show == 'one' ? 'two' : 'one');
}
Fiddle
相关文章:
- 为什么我的指令(使用链接)没有出现,并允许ng模型看到它
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 为什么我的Mongoose DB模式之一可能是“;强制转换为未定义的“;当它的实例被放置在第二个模式中时
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 什么时候字符串不是字符串?当它没有 include() 方法时
- 我的jquery在本地工作,但当它'it’s上传到我的网站上,它只起部分作用
- 函数'未定义'当它是
- 强制浏览器使用实际' '当它断线时
- 为什么我的变量需要一个'var'声明,当它's已经在var声明中了
- 如何将查询参数设置为我的所有路线,当它改变时-在恩伯
- 如何调用$scope$apply()仅当它's还没有进行中
- 为什么jQuery'it’当它着火的时候;s添加到元素中
- jQuery将日期添加到输入中,但仅当它's是空的
- 如何使用 Reactjs 选择输入中的所有文本,当它聚焦时
- JavaScript + SVG :当它在样式之外声明时获取填充
- Javascript在Thymeleaf文件中不起作用,当它成为动态页面
- 为什么Angular不通过添加'选择'属性为<选项>当它正确更新模型时,在ng选项中标记
- AngularJS输入表单验证没有'当它's模型的更改
- 主干模型 POST 当它应该使用 .save() 放置时