如果在填写表格时电子邮件为空,我想阻止 http-post 到“/signUp”的默认操作。
控制器代码:-
$scope.signUp = function() {
if($scope.email = null);
preventdefault;
}
html(玉):-
form(name="input", action="/signUp", method="post")
input(type="submit", value="submit")
如果在填写表格时电子邮件为空,我想阻止 http-post 到“/signUp”的默认操作。
控制器代码:-
$scope.signUp = function() {
if($scope.email = null);
preventdefault;
}
html(玉):-
form(name="input", action="/signUp", method="post")
input(type="submit", value="submit")
当你为表单指定了 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>
在这种情况下,表单将始终具有 preventDefault 并在提交时调用您的 $scope.signUp() 函数,您可以在其中继续将 ajax 发布到后端 /signup 或进一步验证。请注意,通过在您的输入上使用适当的验证属性(如 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
}
...
}