2013-10-28 4 views
10

양식을 채울 때 전자 메일이 null 인 경우 http-post의 기본 동작 인 '/ signUp'을 방지하려고합니다.제출시 기본값 방지 : - Angularjs

컨트롤러 코드 : -

$scope.signUp = function() { 

    if($scope.email = null); 
    preventdefault; 

} 

HTML (옥) : - 양식에 지정된 action 속성이있는 경우

form(name="input", action="/signUp", method="post") 
    input(type="submit", value="submit") 
+0

가 NG 장애인'추가 = "! 이메일"을 입력하십시오. 또는 더 나은 방법은 폼 유효성 검사를 올바르게 구현하는 것입니다. –

답변

18

, AngularJS와는에서 preventDefault을하지 않습니다. 당신이 그것을 제거하고 추가하는 경우 대신 NG를 제출 :

<form name="myForm" method="post" ng-submit="signUp(myForm)" novalidate> 
    <input type="email" name="email" ng-model="newSignup.email" required> 
    <button type="submit">sign up</button> 
</form> 

을이 경우에 양식을 항상로 preventDefault이 있고 아약스 포스트를 진행할 수있는 위치에 대한 당신의 $ scope.signUp() 함수가 호출 될 것이다 제출 백엔드/가입 또는 추가 검증. 입력에 적절한 유효성 검사 속성 (예 : type = "email"및 required)을 사용하면 angularjs가 몇 가지 기본 유효성 검사를 수행합니다. 제출 버튼에 ng-disabled="!myForm.$valid"을 추가로 입력하여 이메일을 올바르게 입력하지 않은 상태에서 버튼을 비활성화 할 수 있습니다. 내 예와 같은 입력에 NG 모델을 사용하여

, 당신의 범위는 당신이 더 검증() 함수 당신의 가입에 확인할 수있는 $scope.newSignup 개체를 얻을 것이다 :

$scope.signUp = function(htmlForm) { 
    if ($scope.newSignup.email !== '[email protected]') { 
     return false; // you should really show some info to the user 
    } 
    ... 
} 
+6

자바 스크립트가 사용 중지 된 경우에도 양식이 필요한 경우 어떻게해야합니까? 그런 다음 action 속성이 필요합니다. 그렇지 않으면 양식이 제출되지 않습니다. 어떻게하면 자바 스크립트가 활성화 된 상태에서 각도가 표시되지 않도록 할 수 있습니까? – berliner

+1

아, https://groups.google.com/forum/#!topic/angular/pqoaPaLdhR4에서 가져 왔습니다. 내 자신의 제출 핸들러를 등록하면됩니다. – berliner