AngularJS表单操作几个例子(表单提交,表单编辑默认值)
听同事讲AngularJS比jquery还要强大一些于时就开始了AngularJS学习工作,但在学习AngularJS中发现对于表单提交与表单默认值都不会搞,下面来看看几个关于AngularJS Form的案例吧。
模仿着我要搞了个AngularJS Form,但是问题来了。。。。
发现初始化时候ng-model 跟 input 标签里的 value 不默契,冲突。。
后来想再AngularJS controller 里预先赋值 $scope.formData = {‘name':’张三’};
可以通过php程序把值赋到这个AngularJS controller里,代码如下:
- <!-- AngularJS controller -->
- <script>
- var formApp = angular.module('formApp', []);
- function formController($scope, $http) {
- $scope.formData = {'name':'张三','remark':'备注'};
- $scope.myForm = function() {
- $http({
- method : 'POST',
- url : '/role/edit',
- data : $.param($scope.formData), // pass in data as strings
- headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload)
- })
- .success(function(data) {
- console.log(data);
- if (!data.success) {
- } else {
- }
- });
- };
- }
- </script>
- <!--对应form里的input调整-->代码如下:
- <input type="text" name="name" ng-model="formData.name" class="form-control" placeholder="Role Name">
后来又搜啊搜 发现还有其他办法,这么个东东 ng-init=”formData.name=’张三'”,代码如下:
- <input type="text" name="name" ng-model="formData.name" ng-init="formData.name='张三'" value="">
好了,上面非常的简单,我们再来看
事件
AngularJS提供可与HTML控件相关联的多个事件。例如ng-click通常与按钮相关联。以下是AngularJS支持的事件。
ng-click
ng-dbl-click
ng-mousedown
ng-mouseup
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-mouseover
ng-keydown
ng-keyup
ng-keypress
ng-change
ng-click
使用点击一个按钮的指令,表单重置数据,代码如下:
- <input name="firstname" type="text" ng-model="firstName" required>
- <input name="lastname" type="text" ng-model="lastName" required>
- <input name="email" type="email" ng-model="email" required>
- <button ng-click="reset()">Reset</button>
- <script>
- function studentController($scope) {
- $scope.reset = function(){
- $scope.firstName = "Mahesh";
- $scope.lastName = "Parashar";
- $scope.email = "MaheshParashar@yiibai.com";
- }
- $scope.reset();
- }
- </script>
验证数据
可使用下面跟踪误差。
$dirty - 规定值已被改变。
$invalid- 该值的状态是无效的。
$error- 指出确切的错误。
例子
下面的例子将展示上述所有指令,代码如下:
testAngularJS.html
- <html>
- <head>
- <title>Angular JS Forms</title>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body>
- <h2>AngularJS Sample Application</h2>
- <div ng-app="" ng-controller="studentController">
- <form name="studentForm" novalidate>
- <table border="0">
- <tr><td>Enter first name:</td><td><input name="firstname" type="text" ng-model="firstName" required>
- <span style="color:red" ng-show="studentForm.firstname.$dirty && studentForm.firstname.$invalid">
- <span ng-show="studentForm.firstname.$error.required">First Name is required.</span>
- </span>
- </td></tr>
- <tr><td>Enter last name: </td><td><input name="lastname" type="text" ng-model="lastName" required>
- <span style="color:red" ng-show="studentForm.lastname.$dirty && studentForm.lastname.$invalid">
- <span ng-show="studentForm.lastname.$error.required">Last Name is required.</span>
- </span>
- </td></tr>
- <tr><td>Email: </td><td><input name="email" type="email" ng-model="email" length="100" required>
- <span style="color:red" ng-show="studentForm.email.$dirty && studentForm.email.$invalid">
- <span ng-show="studentForm.email.$error.required">Email is required.</span>
- <span ng-show="studentForm.email.$error.email">Invalid email address.</span>
- </span>
- </td></tr>
- <tr><td><button ng-click="reset()">Reset</button></td><td><button
- ng-disabled="studentForm.firstname.$dirty && studentForm.firstname.$invalid ||
- studentForm.lastname.$dirty && studentForm.lastname.$invalid ||
- studentForm.email.$dirty && studentForm.email.$invalid"
- ng-click="submit()">Submit</button></td></tr>
- </table>
- </form>
- </div>
- <script>
- function studentController($scope) {
- $scope.reset = function(){
- $scope.firstName = "Mahesh";
- $scope.lastName = "Parashar";
- $scope.email = "MaheshParashar@yiibai.com";
- }
- $scope.reset();
- }
- </script>
- <script src="angular.min.js"></script>
- </body>
- </html>
AngularJS表单操作几个例子(表单提交,表单编辑默认值)
在Web浏览器打开textAngularJS.html。看到结果如下。
常用的表单验证指令
1. 必填项验证
某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可:
- <input type="text" required />
2. 最小长度
验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}":
- <input type="text" ng-minlength="5" />
3. 最大长度
验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用指令ng-maxlength="{number}":
- <input type="text" ng-maxlength="20" />
4. 模式匹配
使用ng-pattern="/PATTERN/"来确保输入能够匹配指定的正则表达式:
- <input type="text" ng-pattern="/[a-zA-Z]/" />
5. 电子邮件
验证输入内容是否是电子邮件,只要像下面这样将input的类型设置为email即可:
- <input type="email" name="email" ng-model="user.email" />
6. 数字
验证输入内容是否是数字,将input的类型设置为number:
- <input type="number" name="age" ng-model="user.age" />
7. URL
验证输入内容是否是URL,将input的类型设置为 url:
- <input type="url" name="homepage" ng-model="user.facebook_url" />