gpt4 book ai didi

javascript - Angular 表单验证,保存按钮始终禁用

转载 作者:行者123 更新时间:2023-12-03 08:43:42 25 4
gpt4 key购买 nike

我有一个 Angular 形式,其中问题在数组中指定。

HTML 如下:

<form ng-controller="SupplierController" name="newSupplierForm">

<p>Enter details for the new Supplier. The new supplier will be added to category {{selectedCategory.description}}</p>

<p ng-repeat="field in formfields">
<label class="field" for="{{field.name}}" ng-hide="newSupplierForm.{{field.name}}.$dirty && (newSupplierForm.{{field.name}}.$error.required || newSupplierForm.{{field.name}}.$invalid)">{{field.caption}}</label>
<label class="error" for="{{field.name}}" ng-show="newSupplierForm.{{field.name}}.$dirty && (newSupplierForm.{{field.name}}.$error.required || newSupplierForm.{{field.name}}.$invalid)">{{field.caption}}</label>
<input type="{{field.type}}" name="{{field.name}}" ng-model="newSupplier[field.name]" ng-required="{{field.required}}">
</p>
<button ng-disabled="newSupplierForm.$invalid" ng-click="saveSupplier()">Save</button>

</form>

Controller 是:

financeApp.controller('SupplierController', function($scope, $http) {

$scope.formfields = [
{caption:'Name :', name:'name', required:"true", type:"text"},
{caption:'Address :', name:'address1', required:"true", type:"text"},
{caption:' :', name:'address2', required:"true", type:"text"},
{caption:' :', name:'address3', required:"", type:"text"},
{caption:' :', name:'address4', required:"", type:"text"},
{caption:'Post Code :', name:'postcode', required:"", type:"text"},
{caption:'Email :', name:'email', required:"", type:"email"},
{caption:'Phone :', name:'phone', required:"", type:"text"}
];

$scope.newSupplier = {};

$scope.saveSupplier = function() {
$http.post('/finance/supplier', newSupplier).success(function(data) {
alert(data);
});
}

});

一切似乎都工作正常,只是“保存”按钮永远不会启用,即使表单有效。到目前为止我所做的研究表明这应该有效,但事实并非如此。

示例:Disable a button if at least one input field is empty using ngDisabled

我做错了什么?

此外,有什么方法可以总体改进此代码吗?这是我第一次尝试 Angular。

最佳答案

尝试 ng-required="field.required",不带花括号,因为这已经需要一个 Angular 表达式。

在 Controller 内部,将 required 视为 true 或 false,而不是字符串。

<小时/>

至于如何改进这一点,您使用的方法是可以的,但是如果您的表单始终具有相同的字段(它不是动态的),您应该为每个字段创建 html 元素,而不是在 Controller 内声明它们。

Controller 应该控制 View 的行为,而不是显示哪些字段(在非动态 View 中)。

关于javascript - Angular 表单验证,保存按钮始终禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com