2013-10-28 16 views
10

Tôi muốn ngăn chặn hành động mặc định của http-đăng lên '/ signUp' nếu e-mail rỗng khi điền biểu mẫu.ngăn chặn mặc định khi gửi: - Angularjs

khiển Code: -

$scope.signUp = function() { 

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

} 

html (ngọc bích): -

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

thêm 'ng-disabled = "! email" 'để nhập. Hoặc tốt hơn, thực hiện xác thực biểu mẫu đúng cách. –

Trả lời

18

Khi bạn có thuộc tính hành động cụ thể đối với hình thức, angularjs sẽ không làm preventDefault. Nếu bạn gỡ bỏ nó và thêm ng-nộp thay:

<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> 

Trong trường hợp này các biểu mẫu sẽ luôn có preventDefault và nộp chức năng $ scope.signUp() của bạn sẽ được gọi là nơi bạn có thể tiến hành một bài ajax vào phần phụ trợ/đăng ký hoặc xác nhận thêm. Lưu ý rằng bằng cách sử dụng các thuộc tính xác nhận hợp lệ trên đầu vào của bạn (như loại = "email" và bắt buộc), angularjs sẽ thực hiện một số xác thực cơ bản cho bạn. Bạn có thể có thêm ng-disabled="!myForm.$valid" trên nút gửi để giữ nút bị tắt trong khi email không được nhập chính xác.

Bằng cách sử dụng ng-mô hình trên đầu vào như trong ví dụ của tôi, phạm vi của bạn sẽ nhận được một đối tượng $scope.newSignup mà bạn có thể kiểm tra trong đăng ký của bạn() chức năng để xác nhận thêm:

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

Điều gì sẽ xảy ra nếu tôi cần biểu mẫu hoạt động ngay cả khi javascript bị tắt. Sau đó, tôi sẽ cần thuộc tính hành động, nếu không biểu mẫu không gửi. Làm thế nào tôi sẽ ngăn chặn góc (trong trường hợp này với javascript được kích hoạt rõ ràng) từ trình? – berliner

+1

Ah, tải xuống từ đây https://groups.google.com/forum/#!topic/angular/pqoaPaLdhR4. Đăng ký trình xử lý gửi của riêng tôi sẽ làm điều đó. – berliner

Các vấn đề liên quan