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