首頁 web前端 js教程 封裝好的萬能偵測表單的方法_javascript技巧

封裝好的萬能偵測表單的方法_javascript技巧

May 16, 2016 pm 04:18 PM
封裝 偵測 表單

偵測表單中的不能為空(.notnull)的驗證

 作用:一對form標籤下有多個(包括一個)表單需要提交時,使用js準確的判斷當前按鈕對那些元素做判斷

 用法:在form標籤下 找到目前 表單的容器 給予class="form",目前表單的提交按鈕給予 class="check"
 需要驗證為空的元素給予class="notnull" nullmsg="xx不能為空!"提示,需要進行邏輯判斷的表單給予class="need"
 判斷的類型給予 class="num"(只能是數字) 驗證的提示 logicmsg="XX只能是數字"

 給予class="errorMessage"顯示錯誤訊息區塊
 給予class="warn"顯示錯誤訊息
 未使用js物件導向程式設計
 邏輯判斷,不傳入need標識,直接給出正規表示式屬性(自訂)regex="/^d$/"  做出判斷

 在外在實現
 Global.submitCallback button回呼函數
 Global.confirmCallback confirm回呼函數;
 需要改進的地方:
 暫無

複製程式碼 程式碼如下:

///
 */
//$(document).ready(
//    function () {
//        $("form").find(".notnull").bind({
//            focus: function () {
//                if ($(this).attr("value") == this.defaultValue) {
//                    $(this).attr("value", "");
//                }
//            },
//            blur: function () {
//                if ($(this).attr("value") == "") {
//                    $(this).attr("value", this.defaultValue);
//                }
//            }
//        });
//    }
//);
///*封裝萬能偵測表單的方法*/
///event.srcElement:引發事件的目標對象,常用於onclick事件。
///event.fromElement:引發事件的物件來源,常用於onmouseout和onmouseover事件。
///event.toElement:引發事件後,滑鼠移動到的目標來源,常用於onmouseout和onmouseover事件。
function Global() {
    var _self = this;
}
Global.submitCallback = null;
Global.confirmCallback = null;
$(document).ready(function () {
    //form body
    $("body").find(".form").each(function () {
        this.onclick = function (e) {
            var button = null;
            try {
                button = e.srcElement == null ? document.activeElement : e.srcElement;
            } catch (e) {
                console.log(e.message)
                button = document.activeElement;
            }
            if ($(button).is(".check")) {
                //alert("提交")
                var sub = (checkform(this) && CheckInputRex(this) && checkselect(this) && checkChecked(this));
                if (sub) {
                    // Call our callback, but using our own instance as the context
                    Global.submitCallback.call(this, [e]);
                }
                return sub;
            } else if ($(button).is(".confirm")) {
                //alert("刪除")
                var sub = confirm($(button).attr("title"));
                if (sub) {
                    Global.confirmCallback.call(this, [e]);
                }
                return sub;
            } else {
                //                    //alert("其它")
                return true;
            }
        }
    });
    /*偵測表單中不能為空的元素*/
    function checkform(form) {
        var b = true;
        $(form).find(".notnull").each(function () {
            if ($.trim($(this).val()).length                 //               if if (this.value != null) {
                //                    $(this).attr("value", "");
                //                }
                //alert($(this).attr("msg"))
                $(this).parents(".form").find(".warn").text($(this).attr("nullmsg"));
                $(this).parents(".form").find(".errorMessage").show();
                $(this).select();
                $(this).focus();
                return b = false;
            }
        });
        if (b == true) {
            $(form).find(".warn").text("");
            $(form).find(".errorMessage").hide();
        }
        return b;
    }
    /*偵測表單中必選的下拉清單*/
    function checkselect(form) {
        var b = true;
        $(form).find(".select").each(function (i) {
            var ck = $(this).find('option:selected').text();
            if (ck.indexOf("選擇") > -1) {
                $(this).parents(".form").find(".warn").text($(this).attr("nullmsg"));
                $(this).parents(".form").find(".errorMessage").show();
                $(this).select();
                $(this).focus();
                return b = false;
            }
        });
        return b;
    }
    /*偵測表單中必選的複選框*/
    function checkChecked(form) {
        var b = true;
        $(form).find(".checkbox").each(function (i) {
            var ck = $(this)[0].checked;
            if (!ck) {
                $(this).parents(".form").find(".warn").text($(this).attr("nullmsg"));
                $(this).parents(".form").find(".errorMessage").show();
                $(this).select();
                $(this).focus();
                return b = false;
            }
        });
        return b;
    }
    //檢查是否符合該正規表示式
    function GetFlase(value, reg, ele) {
        if (reg.test(value)) {
            return true;
        }
        $(ele).parents(".form").find(".warn").text($(ele).attr("logicmsg"));
        $(ele).parents(".form").find(".errorMessage").show();
        $(ele).focus();
        $(ele).select();
        return false; //不能提交
    }
    function CheckInputRex(form) {
        var b = true;
        $(form).find("input[type='text']").each(function () {
            if (typeof ($(this).attr("regex")) == 'string') {
                if ($.trim($(this).val()).length > 0 && $(this).val() != this.defaultValue) {
                    //目前表單的值
                    var value = $(this).attr("value") || $(this).val();
                    var regx = eval($(this).attr("regex"));
                    return b = GetFlase(value, regx, this);
                }
            }
        });
        return b;
    }
    ///檢查使用者輸入的對應的字元是否合法
    ///此方法已廢棄
    function CheckInput(form) {
        var b = true;
        $(form).find(".need").each(function () {
            if ($.trim($(this).val()).length > 0 && $(this).val() != this.defaultValue) {
                //目前表單的數值
                var value = $(this).attr("value");
                //id的值或因name的屬性的值如:[name="contact"]
                var name = $(this).attr("class");
                //檢視需要輸入的內容是否合法如:聯絡方式
                var len = name.split(" ");
                for (var i = 0; i                     switch ($.trim(len[i])) {
                        ///聯絡方式                                                                                                              case "mobile":
                            var reg = /^1d{10}$/;
;
                            return b = GetFlase(value, reg, this);
;                             break;
                        ///信箱                                                                                                              case "email":
                            var reg = /^[w-] (.[w-] )*@[w-] (.[w-] ) $/                             return b = GetFlase(value, reg, this);
;                             break;
                        ///兩個密碼是否一致                                                                                 
                        case "password":
                            break;
                        case "password2":
                            if ($("#password").attr("value") != $("#">2").(                                 $(this).select(); //取得焦點
                              與 $(this).                                 $(this).parents(".form").find(".errorMessage").                                 return b = false; //無法提交
不能提交
                            }
                            break;
                        case "worktel":
                        case "hometel": //居家電話
                            var reg = /^d{8}$/;
                            return b = GetFlase(value, reg, this);
;                             break;
                        case "post": //郵編
                            var reg = /^d{6}$/;
                            return b = GetFlase(value, reg, this);
;                             break;
                        case "bonus":
                        case "allowance":
                        case "FixedSalary":
var reg = /^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0 |0|[1-9]d)$/;
                            return b = GetFlase(value, reg, this);
;                             break;
                        case "identity":
                         地                             return b = GetFlase(value, reg, this);
;                           且所休息;
                        個案「高度」:
                            var reg = /^[1-2][0-9][0-9]$/
;
;                             return b = GetFlase(value, reg, this);
;                            且所休息;
                        個案「qq」:
                            var reg = /^[1-9][0-9]{4,}$/
;
;
;
;
;
;
;
;
;
;
;
;                             return b = GetFlase(value, reg, this);
;                            且所休息;
                        個案「開始時間」:
                        個案「結束時間」:
                            var reg = /^d{4}$/;
                            if (reg.test(value) && (parseInt($(".endtime").val()) > parkue) && (parseInt($(".endtime")。.                                化 b;                             }                             $.ligerDialog.alert($(this).attr("msg"))                             $(this).select(); //取得焦點                            回復為b=假; //無法提交                            且所休息;                         個案「num」:                             var reg = /^d $/;                             return b = GetFlase(value, reg, this);;                            且所休息;                         /// 以香港院內辦理至港澳通行證及香港的簽注。個人用普通護照號碼格式有:                                                                  ///14/15 7位數,G                            
                        ///因公普通的:P.7位數;                                  
                        ///公務的是:S. 7位數 或                                   
                        //S 8位數,以D開頭的是外交護照                                                           
                        case "postport": //護照號碼
                            var reg = /^(Pd{7}|Gd{8}|Sd{7,8,80]>>                             return b = GetFlase(value, reg, this);
;                             break;
                        case "bankaccount":
                            var reg = /^[0-9]{19}$/;
                            return b = GetFlase(value, reg, this);
;                             break;
                    } //switch
                } //for
            }
        });
        return b;
    }
    ///此方法已經廢棄
});
///點選改變背景顏色
$(document).ready(function () {
    var inputs = $("#top>.c>input");
    $(inputs).each(function () {
        this.onclick = function () {
            document.getElementById("main").style.backgroundColor = this.name;
            //$("#main").backgroundColor = this.name;
        }
    });
});

以上程式碼就是封裝過之後的萬用偵測表單的方法了,希望小夥伴們喜歡

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
如何實現PHP表單提交後的頁面跳轉 如何實現PHP表單提交後的頁面跳轉 Aug 12, 2023 am 11:30 AM

如何實現PHP表單提交後的頁面跳轉【簡介】在Web開發中,表單的提交是一項常見的功能需求。當使用者填寫完表單並點擊提交按鈕後,通常需要將表單資料傳送至伺服器進行處理,並在處理完後將使用者重新導向至另一個頁面。本文將介紹如何使用PHP來實現表單提交後的頁面跳躍。 【步驟一:HTML表單】首先,我們需要在HTML頁面中撰寫一個包含表單的頁面,以便使用者填寫需要提交的資料。

i7-7700無法升級至Windows 11的解決方案 i7-7700無法升級至Windows 11的解決方案 Dec 26, 2023 pm 06:52 PM

i77700的效能運行win11完全足夠,但是用戶卻發現自己的i77700不能升級win11,這主要是受到了微軟硬性條件的限制,所以只要跳過該限制就能安裝了。 i77700不能升級win11:1、因為微軟限制了cpu的版本。 2.intel只有第八代以上版本可以直升win11。3、而i77700作為7代,無法滿足win11的升級需求。 4.但是i77700在性能上是完全能流暢使用win11的。 5.所以大家可以使用本站的win11直裝系統。 6.下載完成後,右鍵「裝載」該檔案。 7.再雙擊運行其中的「一鍵

如何使用 JavaScript 實作表單的輸入框內容自動提示功能? 如何使用 JavaScript 實作表單的輸入框內容自動提示功能? Oct 20, 2023 pm 04:01 PM

如何使用JavaScript實作表單的輸入框內容自動提示功能?簡介:表單的輸入框內容自動提示功能在網頁應用程式中非常常見,它可以幫助使用者快速輸入正確的內容。本文將介紹如何使用JavaScript實作此功能,並提供具體的程式碼範例。在建立HTML結構首先,我們需要建立一個包含輸入框和自動提示清單的HTML結構。可以使用以下程式碼:<!DOCTYP

集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% 集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% Apr 17, 2024 pm 08:00 PM

本站4月17日消息,集邦諮詢(TrendForce)近日發布報告,認為英偉達Blackwell新平台產品需求看漲,預估帶動台積電2024年CoWoS封裝總產能提升逾150%。英偉達Blackwell新平台產品包含B系列的GPU,以及整合英偉達自家GraceArmCPU的GB200加速卡等。集邦諮詢確認為供應鏈目前非常看好GB200,預估2025年出貨量預計超過百萬片,在英偉達高階GPU中的佔比達到40-50%。在英偉達計畫下半年交付GB200以及B100等產品,但上游晶圓封裝方面須進一步採用更複

MIT最新力作:以GPT-3.5解決時間序列異常檢測問題 MIT最新力作:以GPT-3.5解決時間序列異常檢測問題 Jun 08, 2024 pm 06:09 PM

今天要為大家介紹一篇MIT上週發表的文章,使用GPT-3.5-turbo解決時間序列異常檢測問題,初步驗證了LLM在時間序列異常檢測的有效性。整個過程沒有進行finetune,直接使用GPT-3.5-turbo進行異常檢測,文中的核心是如何將時間序列轉換成GPT-3.5-turbo可辨識的輸入,以及如何設計prompt或pipeline讓LLM解決異常檢測任務。下面跟大家詳細介紹一下這篇工作。圖片論文標題:Largelanguagemodelscanbezero-shotanomalydete

如何處理PHP表單中的使用者權限管理 如何處理PHP表單中的使用者權限管理 Aug 10, 2023 pm 01:06 PM

如何處理PHP表單中的使用者權限管理隨著Web應用程式的不斷發展,使用者權限管理是重要的功能之一。使用者權限管理可以控制使用者在應用程式中的操作權限,確保資料的安全性和合法性。在PHP表單中,使用者權限管理可以透過一些簡單的程式碼來實現。本文將介紹如何處理PHP表單中的使用者權限管理,並給予對應的程式碼範例。一、使用者角色的定義與管理首先,將使用者角色定義與管理是使用者權

如何使用 JavaScript 實作表單的輸入框內容即時校驗功能? 如何使用 JavaScript 實作表單的輸入框內容即時校驗功能? Oct 18, 2023 am 08:47 AM

如何使用JavaScript實作表單的輸入框內容即時校驗功能?在許多網頁應用程式中,表單是使用者與系統之間最常用的互動方式。然而,使用者輸入的內容往往需要進行有效性校驗,以確保資料的準確性和完整性。在這篇文章中,我們將學習如何使用JavaScript實作表單的輸入框內容即時校驗功能,並提供具體的程式碼範例。在建立表單首先,我們需要在HTML中建立一個簡單的表

改進的檢測演算法:用於高解析度光學遙感影像目標檢測 改進的檢測演算法:用於高解析度光學遙感影像目標檢測 Jun 06, 2024 pm 12:33 PM

01前景概要目前,難以在檢測效率和檢測結果之間取得適當的平衡。我們研究了一種用於高解析度光學遙感影像中目標偵測的增強YOLOv5演算法,利用多層特徵金字塔、多重偵測頭策略和混合注意力模組來提高光學遙感影像的目標偵測網路的效果。根據SIMD資料集,新演算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在偵測結果和速度之間達到了更好的平衡。 02背景&動機隨著遠感技術的快速發展,高解析度光學遠感影像已被用於描述地球表面的許多物體,包括飛機、汽車、建築物等。目標檢測在遠感影像的解釋中

See all articles