2017-01-03 103 views
0

我试图验证我的表单,如果这些字段是有效的,那么它应该将数据发布到数据库,如果不阻止将数据发布到数据库。当我提交表格我得到一个错误TypeError: Cannot read property '$valid' of undefined,我不知道如何克服它,需要帮助。表单验证使用angularjs

HTML:

<form name="formvalidation"> 
<ion-view ng-controller="ValidationCheck"> 
<ion-content> 
<div> 
<strong>User:</strong> <br/> 
<input ng-model="name" type="text" name="name" required/> 
<ng-messages for="formvalidation.name.$error" ng-if="formvalidation.name.$invalid"> 
<div ng-messages-include="error/validation.html"></div> 
<ng-messages> 
</div> 
</from> 
<button ng-click="check()"> 

控制器:

myApp.controller('ValidationCheck',function($scope, applicationService) 
{ 
$scope.check=function(formvalidation){ 
var name={'name'=$scope.name}; 
$scope.submitted=true; 
if(formvalidation.$valid){ 
applicationService.save(name,$scope.home); 
}}}); 

回答

1

只要改变你的,如果条件formvalidation.$validformvalidation 。因为您已通过formvalidation.$valid在您的功能中通过ng-click

if(formvalidation){ 
... 
... 
... 

} 
0

删除NG单击并添加NG提交:

<form name="formvalidation" ng-submit="check()" novalidate> 
0

试试这个:(控制器在f之前ORM)

<ion-view ng-controller="ValidationCheck"> 
     <form name="formvalidation"> 
0

在你的HTML您有:

<button ng-click="check(formvalidation.$valid)"> 

与无论是真或假的值(一个布尔调用检查功能),这取决于窗体是否在有效。

在您的控制器必须与校验功能以下if语句:

if(formvalidation.$valid) 

但formvalidation是一个布尔值(true或false)

我建议从检查和简单的访问参数$ scope变量的formvalidation属性。

使HTML变得

<button ng-click="check()"> 

和控制器变成

$scope.check=function(){ 
    var name={'name'=$scope.name}; 
    $scope.submitted=true; 
    if($scope.formvalidation.$valid) { 
     applicationService.save(name,$scope.home); 
    } 
} 
0

<form>应该来控制器声明之后

<div ng-app="app"> 
    <ion-view ng-controller="ValidationCheck"> 
    <form name="formvalidation"> 
     <ion-content> 

var app = angular.module("app", []); 
 
app.controller('ValidationCheck', function($scope) { 
 
    $scope.check = function(formvalidationBoolean) { 
 
    alert(formvalidationBoolean); 
 
    var name = { 
 
     'name': $scope.name 
 
    }; 
 
    $scope.submitted = true; 
 
    if (formvalidationBoolean) { 
 
     //applicationService.save(name, $scope.home); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app"> 
 
    <ion-view ng-controller="ValidationCheck"> 
 
    <form name="formvalidation"> 
 
     <ion-content> 
 
     <div> 
 
      <strong>User:</strong> 
 
      <br/> 
 
      <input ng-model="name" type="text" name="name" required/> 
 
      <ng-messages for="formvalidation.name.$error" ng-if="formvalidation.name.$invalid"> 
 
      <div ng-messages-include="templates/admin/validation.html"></div> 
 
      <ng-messages> 
 
     </div> 
 
     </from> 
 
     <button ng-click="check(formvalidation.$valid)">Submit</button> 
 
</div>

  1. 您发送布尔值"ng-click="check(formvalidation.$valid)",所以你的发言if(formvalidation.$valid){内部控制是错误的。
  2. ,你需要改变 “=” 要 “:” 在var name = {'name': $scope.name };