San*_*ngh 10 angularjs angularjs-directive angularjs-controller
如果填写表单时电子邮件为空,我想阻止http-post的默认操作为'/ signUp'.
控制器代码: -
$scope.signUp = function() {
if($scope.email = null);
preventdefault;
}
Run Code Online (Sandbox Code Playgroud)
html(玉): -
form(name="input", action="/signUp", method="post")
input(type="submit", value="submit")
Run Code Online (Sandbox Code Playgroud)
Dan*_*gea 18
如果为表单指定了action属性,angularjs将不会执行preventDefault.如果你删除它并添加ng-submit代替:
<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>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,表单将始终具有preventDefault,并且在提交时将调用$ scope.signUp()函数,您可以在其中继续ajax发布到后端/注册或进一步验证.请注意,通过在输入上使用适当的验证属性(如type ="email"和required),angularjs将为您执行一些基本验证.您可以ng-disabled="!myForm.$valid"在提交按钮上添加一个额外的按钮,以便在未正确输入电子邮件时禁用该按钮.
通过在我的示例中对输入使用ng-model,您的范围将获得一个$scope.newSignup对象,您可以在signUp()函数中检查该对象以进一步验证:
$scope.signUp = function(htmlForm) {
if ($scope.newSignup.email !== 'some@email.com') {
return false; // you should really show some info to the user
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27151 次 |
| 最近记录: |