Javascript 将表单设置为$pristine,但保留当前值
我的用例是,我需要根据用户是否更改了表单的值来启用/禁用保存按钮 当用户单击save按钮(进行更改后)时,将进行AJAX保存,完成后,表单需要再次被视为“原始”,但保留当前值 我想设置Javascript 将表单设置为$pristine,但保留当前值,javascript,angularjs,Javascript,Angularjs,我的用例是,我需要根据用户是否更改了表单的值来启用/禁用保存按钮 当用户单击save按钮(进行更改后)时,将进行AJAX保存,完成后,表单需要再次被视为“原始”,但保留当前值 我想设置表单。$pristine=true会起作用,它在单击按钮后第一次这样做,但是编辑那里的值不会将$pristine设置为false 示例plunker: 提交 Form pristine:{{submitForm.$pristine}} //内部控制器 $scope.saveForm=函数(){ $scope.su
表单。$pristine=true
会起作用,它在单击按钮后第一次这样做,但是编辑那里的值不会将$pristine
设置为false
示例plunker:
提交
Form pristine:{{submitForm.$pristine}}
//内部控制器
$scope.saveForm=函数(){
$scope.submitForm.$pristine=true;
}
我建议在表单标签上使用ng submit,而不是使用ng click。ng submit确保在调用ng submit的事件处理程序之前提交所有viewmodel更改。这将特别适用于在ng模型中使用ng选项的情况,您可能已将选项设置为仅在特定时间或onblur后更新模型 您还可以在提交标记时将表单的值设置为pristine,如下所示 这是更新后的代码和plunker。请注意,如果表单无效,将不会调用ng submit。这是使用ng submit而不是ng click的另一个优点
<form name="submitForm" ng-submit="saveForm();submitForm.$setPristine();">
<input ng-model="data.first" type="text" />
<input ng-model="data.second" type="text" />
<button >Submit</button>
</form>
提交
您是否尝试过使用
$setPristine()
而不是$pristine
?将值重置为初始值,不是吗?我误解了它的意思,所有示例都显示它将窗体重置为其原始状态。谢谢谢谢你,维尼。我理解为什么ng submit更好,但我的设置包括多个按钮,不一定涉及表单。感谢您的反馈Devin。没有意识到您正在使用多个按钮。很高兴你找到了答案。
<form name="submitForm" ng-submit="saveForm();submitForm.$setPristine();">
<input ng-model="data.first" type="text" />
<input ng-model="data.second" type="text" />
<button >Submit</button>
</form>