您現在的位置是:電腦技術吧?>? 基礎知識 ??>??驗證表單,javascript表單驗證??>??正文詳情

驗證表單,javascript表單驗證

丁悅可2019-12-05 17:31:59 人圍觀
簡介html怎么驗證表單本文主要介紹angularjs中表單驗證編程的詳細說明。Angularjs是一個非常流行的JavaScript庫。您可以為您的朋友參考以下要求:名稱是必需的,用html表單驗證

這篇文章主要介紹了詳細解讀AngularJS中的表單驗證編程,AngularJS是一個非常熱門的JavaScript庫,需要的朋友可以參考下  需求  Name 必填  Username 非必填,最小長度3,最大長度8  Email 非必填,但必須是合法的email  驗證未通過的表單不能提交  顯示一個必填或者非法email格式的錯誤信息  如果正確提交就彈出一個祝賀信息  現在知道我們的目標了吧,讓我們一起來構建這個東西吧.  Angular 的表單屬性 $valid, $invalid, $pristine, $dirty  Angular 提供了有關表單的屬性來幫助我們驗證表單. 他們給我們提供了各種有關一個表單及其輸入的信息,并且應用到了表單和輸入.  屬性類  描述  $valid ng-valid Boolean 告訴我們這一項當前基于你設定的規則是否驗證通過  $invalid ng-invalid Boolean 告訴我們這一項當前基于你設定的規則是否驗證未通過  $pristine ng-pristine Boolean 如果表單或者輸入框沒有使用則為True  $dirty ng-dirty Boolean 如果表單或者輸入框有使用到則為True  Angular 也提供了有關表單及其輸入框的類,以便你能夠依據每一個狀態設置其樣式.  訪問表單屬性  方位表單:  .  訪問一個輸入框: ..  設置我們的表單  我們將使用一個簡單的表單來做演示.

  我們將需要兩個文件:  index.html 我們用來顯示表單的代碼  app.js 我們的Angular應用程序和控制器 (幾乎沒有任何代碼)  Our Form Code index.html  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 !-- index.html -- !DOCTYPE html html head !-- CSS ===================== -- !-- load bootstrap -- link rel=stylesheet href=http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css style body { padding-top:30px; } /style !-- JS ===================== -- !-- load angular -- script src=http://code.angularjs.org/1.2.6/angular.js/script script src=app.js/script /head !-- apply angular app and controller to our body -- body ng-app=validationApp ng-controller=mainController div class=container div class=col-sm-8 col-sm-offset-2 !-- PAGE HEADER -- div class=page-headerh1AngularJS Form Validation/h1/div !-- FORM -- !-- pass in the variable if our form is valid or invalid -- form name=userForm ng-submit=submitForm(userForm.$valid) novalidate !-- novalidate prevents HTML5 validation since we will be validating ourselves -- !-- NAME -- div class=form-group labelName/label input type=text name=name class=form-control ng-model=name required /div !-- USERNAME -- div class=form-group labelUsername/label input type=text name=username class=form-control ng-model=user.username ng-minlength=3 ng-maxlength=8 /div !-- EMAIL -- div class=form-group labelEmail/label input type=email name=email class=form-control ng-model=email /div !-- SUBMIT BUTTON -- button type=submit class=btn btn-primarySubmit/button /form /div!-- col-sm-8 -- /div!-- /container -- /body /html   這里列出了一些關鍵點:  novalidate: 它將會組織默認的HTML5驗證,因為這會由我們自己來做(我們自己的將會更棒)  我們在輸入框上應用了ng-model,以便將來自表單的數據綁定到angular變量  username上的ng-minlength 和 ng-maxlength會自己創建其規則  name 輸入框是必填的  email 輸入框有屬性 type=email  驗證規則  Angular 有很多驗證規則,像是 tong-min leng than dng-max length.  Angular還可以自己配置規則. Angular輸入指引上有說明 .  ? 1 2 3 4 5 6 7 8 9 10 input ng-model={ string } name={ string } required ng-required={ boolean } ng-minlength={ number } ng-maxlength={ number } ng-pattern={ string } ng-change={ string } /input   現在建好了表單, 接著創建Angular應用和控制器,ng-app ng-控制器.  應用的 Codeapp.js  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // app.js // create angular app var validationApp = angular.module('validationApp', []); // create angular controller validationApp.controller('mainController', function($scope) { // function to submit the form after all validation has occurred $scope.submitForm = function(isValid) { // check to make sure the form is completely valid if (isValid) { alert('our form is amazing'); } }; });   使HTML5驗證器的novalidate  我們將在我們的表單使用novalidate。

這是一個很好的做法,因為我們將會自己處理驗證。

如果我們讓我們的表單這樣做,它看起來很丑陋。

  禁用提交按鈕 ng-disabled  現在真正的好戲上演了。

我們開始使用Angular的屬性 。

首先讓我們禁用我們的提交按鈕。

如果我們的表單是$invalid的,我們只想禁用它。

  ? 1 2 3 4 5 6 7 !-- index.html -- ... !-- SUBMIT BUTTON -- button type=submit class=btn btn-primary ng-disabled=userForm.$invalidSubmit/button ...   只使用一點代碼(ng-disabled),如果我們的表單是$invalid的,表單按鈕將被禁用。

  這意味著,我們的name input 字段是必需的,并且email input字段需要一個有效的電子郵件。

  用 eng-show顯示錯誤信息  ng-valid 和ng-invalid 會基于提供的表單規則自動驗證輸入的有效性.  咱們在輸入部分加一些錯誤信息,只要不等于$valid或是已經使用過的就行 (不能展示還沒使用).  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 !-- index.html -- ... !-- NAME -- div class=form-group labelName/label input type=text name=name class=form-control ng-model=name required p ng-show=userForm.name.$invalid !userForm.name.$pristine class=help-blockYou name is required./p /div !-- USERNAME -- div class=form-group labelUsername/label input type=text name=username class=form-control ng-model=user.username ng-minlength=3 ng-maxlength=8 p ng-show=userForm.username.$error.minlength class=help-blockUsername is too short./p p ng-show=userForm.username.$error.maxlength class=help-blockUsername is too long./p /div !-- EMAIL -- div class=form-group labelEmail/label input type=email name=email class=form-control ng-model=email p ng-show=userForm.email.$invalid !userForm.email.$pristine class=help-blockEnter a valid email./p /div ...   就像這樣 Angular 會根據規則來驗證輸入部分的$invalid 和 $pristine properties屬性從而決定是否顯示錯誤信息.

  格局類  Angular在驗證輸入或表單時的有效有否是已經提供了一些類,像是 (ng-valid,ng-invalid,ng-pristineandng-dirty).  你可以編輯自己喜歡的CSS . 你可以私有定制化這些類來實現特定的場景應用.  ? 1 2 3 4 5 6 7 8 9 .ng-valid { } .ng-invalid { } .ng-pristine { } .ng-dirty { } /* really specific css rules applied by angular */ .ng-invalid-required { } .ng-invalid-minlength { } .ng-valid-max-length { }   使用 ng-class 根據條件添加類  因為我們使用了 Bootstrap, 我們將就使用它們提供的類(has-error). 這樣就能圍繞我們的form-group獲得漂亮的錯誤信息和顏色.  ng-class 允許我們基于一個表達式添加類. 在這種情況下,我們想要想我們的form-group添加一個 has-error 類,如果輸入框的狀態是$invalid或者不是pristine的話.  其工作的方式是 ng-class={ : }. 更多的信息,請讀一讀 Angular ngClass 文檔吧.  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 !-- index.html -- ... !-- NAME -- div class=form-group ng-class={ 'has-error' : userForm.name.$invalid !userForm.name.$pristine } labelName/label input type=text name=name class=form-control ng-model=user.name required p ng-show=userForm.name.$invalid !userForm.name.$pristine class=help-blockYou name is required./p /div !-- USERNAME -- div class=form-group ng-class={ 'has-error' : userForm.username.$invalid !userForm.username.$pristine } labelUsername/label input type=text name=username class=form-control ng-model=user.username ng-minlength=3 ng-maxlength=8 p ng-show=userForm.username.$error.minlength class=help-blockUsername is too short./p p ng-show=userForm.username.$error.maxlength class=help-blockUsername is too long./p /div !-- EMAIL -- div class=form-group ng-class={ 'has-error' : userForm.email.$invalid !userForm.email.$pristine } labelEmail/label input type=email name=email class=form-control ng-model=user.email p ng-show=userForm.email.$invalid !userForm.email.$pristine class=help-blockEnter a valid email./p /div ...   現在我們的表單就有了恰當的Bootstrap錯誤類.

  只在提交表單后顯示錯誤信息  有時候不想在用戶正在輸入的時候顯示錯誤信息. 當前錯誤信息會在用戶輸入表單時立即顯示. 由于Angular很棒的數據綁定特性,這是可以發生的. 因為所有的事務都可以在一瞬間發生改變,這在表單驗證時會有副作用.  對于你想要只在表單正要提交之后才顯示錯誤消息的場景, 你就需要對上面的代碼做一些小調整.  你要去掉提交按鈕上的ng-disabled,因為我們想要用戶即使是在表單沒有全部驗證完的情況下也能點擊提交.  你要在表單已經被提交之后添加一個變量. 在你的 submitForm() 函數中, 只要加入 $scope.submitted = true 就行了;. 一旦表單被提交,它就會保存提交值為true的submitted變量.  將錯誤規則從ng-class={ 'has-error' : userForm.name.$invalid !userForm.name.$pristine } 調整為 ng-class={ 'has-error' : userForm.name.$invalid !userForm.name.$pristine submitted }. 這就確保了錯誤消息只會在表單被提交時被顯示出來. 你也許會需要為這個變量調整所有其它的 ng-class 和 ng-show.  現在,只有在submitted變量被設置為true時才會顯示錯誤信息.  只有在輸入框之外點擊時才顯示錯誤消息  只有在輸入框之外點擊時才顯示錯誤消息(也被叫做失去焦點 blur) 這一需求比在提交時驗證要復雜一點. 在失去焦點時驗證表單需要一個custom指令. 這是一個可以讓你操作DOM的指令.  我們正在寫一篇文章專門討論此話題。

同時,還有其他的一些資源討論了創建custom指令來處理失去焦點的情況:  http://coding-issues.blogspot.in/2013/10/angularjs-blur-directive.html  http://blog.ejci.net/2013/08/06/dealing-with-focus-and-blur-in-angularjs-directives/  http://plnkr.co/edit/Xfr7X6JXPhY9lFL3hnOw?p=preview  全部完成  現在一旦我們正確填寫了所有的信息,我們的表單提交按鈕就能使用了. 一旦我們提交了表單,我們將會見到我們設置的彈出消息.

  用了幾行我們就可以:  進行輸入框驗證  顯示表單錯誤消息  定制樣式類  自動禁止和啟用表單  定制規則  如你所見,我們使用了Angular內置的表單驗證技術來創建一個客戶端驗證表單.

版權聲明:本文由 丁悅可 整理編輯。

原標題:為什么要進行表單驗證,表單提交驗證

轉載注明出處:http://www.dn9ww09s.icu/basics/15190.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • jsonp如何實現,jsonp實現

    jsonp如何實現,jsonp實現 相關圖片jsonp如何實現跨域本文主要介紹了jsonp在JavaScript中的模擬實現。本文直接給出了實現代碼,其中包含了詳細的注釋。對于您的朋友,請參考“1234567891013141jsonp簡單實現...

  • 批處理中如何判斷幾個文件是否存在,批處理文件中一cp命令

    批處理中如何判斷幾個文件是否存在,批處理文件中一cp命令 相關圖片ps中批處理批處理是邏輯單元的一組T-SQL語句。要將腳本分成批,可以使用go語句。一。Go語句必須是自包含的。2。Go語句使每個批獨立地發送到服務器,獨立于其他批處理程序ps中批處理...

  • datatable怎么用,datatable比較

    datatable怎么用,datatable比較 相關圖片datatable詳解本文主要介紹viewstate和datatable的動態數據輸入示例。以下代碼可用于您的朋友:%@page language=C?EnableViewStatec# datatable...

  • c語言在線編程,c語言經典程序100例

    c語言在線編程,c語言經典程序100例 相關圖片c語言例子本文從C?程序員的角度詳細介紹了學習typescript的過程,主要針對兩種語言的異同進行了簡單的比較研究,希望對您有所幫助。Typescript發展得很好。在菜鳥教程100例...

  • 9 patch,怎樣用patch

    9 patch,怎樣用patch 相關圖片patch是什么Oracle補丁也稱為Oracle補丁。有幾種Oracle修補程序。很難數這些小塊,也很難避免讓人眼花繚亂。不過,甲骨文補丁程序是有序的。Oracle提供的oppatch of...

  • 常用代碼片段,30s代碼片段

    常用代碼片段,30s代碼片段 相關圖片有關下面代碼片段的說法一。打開一個新窗口并發送參數:發送參數:響應。Write()接收參數:字符串a=request.querystring(ID);字符串B=request.que管理常用代碼片段...

  • 用戶角色與權限,用戶角色權限具體實現

    用戶角色與權限,用戶角色權限具體實現 相關圖片用戶角色權限管理系統Oracle數據庫用戶管理Oracle權限設置一、權限分類:系統權限:系統指定用戶使用數據庫的權限。(系統權限針對用戶)。實體權限:某個權限用戶對其他用戶的表...

  • 閉包內存泄露,閉包為什么會造成內存泄露

    閉包內存泄露,閉包為什么會造成內存泄露 相關圖片閉包阮一峰本文主要介紹JS閉包導致內存泄漏的相關數據。可以在JS閉包中定義局部變量以供參考。但是,如果從外部調用它,特別是重復調用,將導致大量內存開銷。如何防止這種現象...

  • 單選,三d單選

    單選,三d單選 相關圖片3d單選網我之所以使用checkboxlist來實現無線電選擇,是因為我認為checkboxlist控件頁的顯示效果應該更好。您可以參考中提供的radiobutonlis福彩單選...

  • oracle11g空表導出,oracle導出空數據庫

    oracle11g空表導出,oracle導出空數據庫 相關圖片oracle空白表如何在Oracle 11g中導出空表?由于Oracle 11g延遲段創建的新特性,當沒有數據插入時Oracle不會分配數據段,因此exp不能在11g數據庫中導出oracle查詢空表要2到3秒...

熱評文章

  • 準則,兩個準則

    準則,兩個準則 相關圖片兩條例一準則本文主要介紹JavaScript API設計的一些建議和指導原則。它列出了許多著名的JSAPI輔助解釋,并強烈推薦!你可以把設計作為一個非常普遍的概念,它可以理兩準則四條例...

  • cmd打開sqlserver,cmd登錄sqlserver

    cmd打開sqlserver,cmd登錄sqlserver 相關圖片cmd窗口sql如果您的遠程桌面無法遠程,系統將提示您用戶數超過。您可以嘗試使用SQL server。您還可以通過在SQL server中執行CMD命令來注銷登錄用戶。連接到Mcmd登錄sql...

  • 12560 協議適配器錯誤,協議適配器錯誤12560怎么處理

    12560 協議適配器錯誤,協議適配器錯誤12560怎么處理 相關圖片數據庫協議適配器錯誤解決方案:首先,確保創建了多個本地數據庫實例。如果尚未創建新實例,則默認實例為:orcl;如果已創建新實例,則輸入自己新創建的實例名稱。此時,只需在...

  • sqlserver死鎖,sqlserver死鎖解決

    sqlserver死鎖,sqlserver死鎖解決 相關圖片sql 死鎖一。死鎖1的四個必要條件。互斥:資源不能共享,只能由一個進程使用。2。等待:已獲取資源的進程可以再次申請新資源。三。沒有pre-sqlserver日志查看死鎖...

  • jquerygrid,jquerygrid拖拽

    jquerygrid,jquerygrid拖拽 相關圖片js表格grid控件本教程將教您制作一個jQuery響應圖像以顯示庫效果。所有的圖像都以網格的形式排列,然后隨機翻轉一些網格來切換圖片。這個效果可以作為我們網站的背景或裝飾。grij...

  • jquery toggle,jquery

    jquery toggle,jquery 相關圖片jquery listJQuery的toggle()函數使用show()或hide()函數來切換HTML元素的可見狀態。今天,我們將討論在jQuery中使用toggle函數的替代方法jquery文檔...

  • 什么是增量備份,增量備份和完全備份

    什么是增量備份,增量備份和完全備份 相關圖片增量和差異備份RMAN中有兩種增量備份:差異模式和累積模式。備份級別分為五個級別:0、1、2、3和4,其中級別0最高。差異備份(同意上級備份甚至對等備份):分析:上周日增量備份...

  • sqlserver數據庫連接配置,連接sqlserver數據庫方法

    sqlserver數據庫連接配置,連接sqlserver數據庫方法 相關圖片sql2000數據庫導入聯系Java或JSP,必然會使用數據庫SQL Server 2000/2005(我使用的是2005標準版[9.0.3054]測試),經過自己的搜索和研究,使用Jsql server連接服務器...

  • jquery ready,js ready

    jquery ready,js ready 相關圖片jquery toggle本文主要介紹jQuery中ready()函數的執行時間以及窗口加載事件比較的相關資料。對于您的朋友,可以參考jQuery中ready()的實現是domcontejquery callback...

  • lvds接口詳解,eDP接口

    lvds接口詳解,eDP接口 相關圖片lvds接口圖解類型檢查是typescript的核心設計原則之一。通過使用接口,可以進行類型檢查,滿足傳統的面向對象思想,有利于有效開發,有效避免類型轉換問題。在typescr主板接口詳細圖...

關注微信

变脸官网查询