2013-10-28 39 views
10

E-posta doldurma formunun boş olması durumunda, http-post'un '/ signUp' konumuna öntanımlı eylemini önlemek istiyorum., gönderim sırasında varsayılanı önler: - Angularjs

Kontrolör Kodu: -

$scope.signUp = function() { 

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

} 

html (yeşim) - form için belirtilen eylem niteliği olduğunda

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

ng özürlü 'ekleme = Giriş yapmak için "! email". Veya daha iyisi, form doğrulamasını düzgün bir şekilde uygulayın. –

cevap

18

, angularjs preventDefault yapmayacağım. bunu kaldırmak ve eklerseniz yerine ng gönderin:

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

Bu durumda formu her zaman preventDefault varsa ve bir ajax yazı ile devam nerede üzerinde $ scope.signUp() fonksiyonu çağrılır sunacaktır arka uç/kayıt veya daha fazla doğrulama için. Girdilerinizde uygun doğrulama özniteliklerini kullanarak (type = "email" gibi) gerekli olduğunu ve angularjs sizin için bazı temel doğrulamaları gerçekleştireceğini unutmayın. E-posta doğru girilmediğinde düğmeyi devre dışı bırakmak için, gönderme düğmesine ng-disabled="!myForm.$valid" numaralı bir ekstra verebilirsiniz. Benim örneğinde olduğu gibi girişler ng modeli kullanarak

, Kapsamınızı daha fazla doğrulama için() işlevi, kayıt olma kontrol edilebilir bir $scope.newSignup nesne alır:

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

Javascript devre dışı bırakılmış olsa bile çalışmak için forma ihtiyacım varsa. Sonra eylem özniteliğine ihtiyacım var, aksi halde form gönderilmez. Açılmayı nasıl önleyebilirim (bu durumda javascript açık bir şekilde etkinleştirilmiş) gönderilmesini nasıl engelleyebilirim? – berliner

+1

Ah, buradan https://groups.google.com/forum/#!topic/angular/pqoaPaLdhR4 adresinden ulaşabilirsiniz. Kendi gönderen işleyicimin kaydedilmesi bunu yapacaktır. – berliner

İlgili konular