Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带跳过某些字段的角度形式验证_Javascript_Angularjs - Fatal编程技术网

Javascript 带跳过某些字段的角度形式验证

Javascript 带跳过某些字段的角度形式验证,javascript,angularjs,Javascript,Angularjs,我有一个页面,其中有一个名为profile update的表单,当用户来此页面更新其配置文件时,他只更新1或2个字段,因此每次表单检查表单是否有效时,只保存在db中,但我想保存密码和确认密码字段是否未更新,然后也更新其配置文件,但是,当他想要更改密码时,time save按钮将被禁用,并在更新配置文件后检查验证 表示当用户仅更新名称时,同时更新配置文件,同时用户更新密码时,首先检查验证,然后更新配置文件 保存并isValid检查: app.controller('DemoCtrl', funct

我有一个页面,其中有一个名为profile update的表单,当用户来此页面更新其配置文件时,他只更新1或2个字段,因此每次表单检查表单是否有效时,只保存在db中,但我想保存密码和确认密码字段是否未更新,然后也更新其配置文件,但是,当他想要更改密码时,time save按钮将被禁用,并在更新配置文件后检查验证

表示当用户仅更新名称时,同时更新配置文件,同时用户更新密码时,首先检查验证,然后更新配置文件

保存并
isValid
检查:

app.controller('DemoCtrl', function($scope, $http) {
 $scope.saveProfile = function(){
            if($scope.profile.$valid){
                ngProgress.start();
                user.saveProfile($scope.currentUser.details,function(response){
                    angular.copy(response,shared.data.currentUser);
                    notification.success($filter("il8n")("_ProfileUpdateMessage_"));
                    ngProgress.done();
                });
            }
        }

   $scope.isValidForm = function(){

            //if(($scope.profile.confirmpassword && $scope.profile.newpassword && $scope.profile.newpassword.$modelValue !== $scope.profile.confirmpassword.$modelValue))
            //    return true;
            if(!$scope.profile.$valid){
               if(($scope.profile.confirmpassword && $scope.profile.newpassword && $scope.profile.confirmpassword.$modelValue && $scope.profile.newpassword.$modelValue && ($scope.profile.newpassword.$modelValue.length == 0 || $scope.profile.confirmpassword.$modelValue.length == 0))){
                   return false;
               }
                if(($scope.profile.confirmpassword && $scope.profile.newpassword && $scope.profile.confirmpassword.$modelValue && $scope.profile.newpassword.$modelValue && $scope.profile.newpassword.$modelValue ===  $scope.profile.confirmpassword.$modelValue)){
                    return false;
                }
            }
            if($scope.profile.$valid && $scope.profile.$dirty)
                return false;

            if($scope.profile.newpassword.$invalid || $scope.profile.newpassword.$dirty &&  $scope.profile.confirmpassword.$invalid || $scope.profile.confirmpassword.$dirty){
                //$scope.profile.newpassword.$valid;
                //$scope.profile.confirmpassword.$valid;
                return false;
            }
            //if($scope.profile.newpassword.empty &&  $scope.profile.confirmpassword.empty ){
            //   return true;
            //}
            return true;
        }      
 });

查找plnkr。

在我看来,您想要一个表单,用户可以在其中更新几个字段,然后再更新它们

关于密码更改,我认为您应该将密码更改中的配置文件信息拆分为两个单独的表单,用户可以在不更改其他数据的情况下更改密码。然后,如果用户想要更改其他用户数据(绑定到ng模型并已放置到文本框中),则用户更改数据并保存它们

问题解决了。如果你愿意,我可以试着编辑你的plunk并展示它的样子:)

扑通


修改密码
密码应至少包含一个特殊字符、数字、大写字母和至少8个字符。
密码不匹配
此外,在表单字段集中,您可以添加带有type=“submit”的save按钮,然后该按钮将调用定义在表单标记中的函数

<form ng-submit="SAVE FUNCTION HERE">


我不确定我是否完全理解您的问题,但will
ng model options=“{allowInvalid:true}”
help?我的问题是当用户在没有输入密码字段的情况下更新其配置文件时,若他只更改名称字段,那个么也会更新一个用户配置文件,并且当用户想要更改密码时,会检查验证和更新配置文件。我将把密码设置为“”,只有在密码不为空时才进行验证,如果密码匹配,验证才会通过。我使用的指令将表单设置为无效,如果它们不匹配。我尝试避免代码验证。我让指令将字段和表单设置为无效。我发现指令在git@user3608377如果你同意的话,我会在周末做那件事u@user3608377在这里,我没有弄乱函数性,但我只是重新排列了输入字段,并将其转换成单独的形式。查看更多关于角度形状的角度文档。您可以只绑定到输入字段属性,然后调用submit.hi@Imants,正如您所建议的那样,我使用了两种表单来设置配置文件和更改密码。但是我现在遇到的问题是,通过提交一个表单,另一个表单的保存按钮被启用,我不知道为什么。“另一个保存”按钮的ng disabled属性不会更改,但仍会启用!!感谢您的帮助。提前谢谢!等待您现在有2个表单,每个表单都有一个保存按钮?将plnkr放入coments以查看问题所在
<form ng-submit="SAVE FUNCTION HERE">