Javascript表單驗(yàn)證--輸入框

表單驗(yàn)證是數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中輸入數(shù)據(jù)進(jìn)行驗(yàn)證。

表單驗(yàn)證是前端Javascript重要功能之一宝泵。是網(wǎng)頁(yè)中不可缺少的重要部分。輸入框的表單驗(yàn)證是表單驗(yàn)證中的最重要部分轩娶。文本框儿奶、密碼框、文本域這些控件的驗(yàn)證方式完全一致鳄抒,下面以一個(gè)文本框作為例子闯捎,演示輸入框的驗(yàn)證方式椰弊。

1. 基礎(chǔ)版

單擊提交按鈕時(shí)進(jìn)行驗(yàn)證,是最簡(jiǎn)單最直接的驗(yàn)證方式瓤鼻。下面是這種驗(yàn)證的實(shí)現(xiàn)方式秉版。

1.1 基本結(jié)構(gòu)

  • HTML代碼
  <form action="#">
    <input id="txt_submit" type="text" name="test" placeholder="請(qǐng)輸入6~10個(gè)字符的中文"><span id="msg"></span>
    <button id="btn_submit" type="submit">提交</button>
  </form>

沒(méi)有真實(shí)提交的URL,暫時(shí)使用#代替茬祷。

表單三要素

  1. 表單form(必須指定屬性action,必要時(shí)指定屬性method)
  2. 輸入input/select/textarea
  3. 提交按鈕submit
  • JS基本框架
    Javascript必備結(jié)構(gòu)
    // HTML文檔加載完成后執(zhí)行JS代碼
    window.onload = function() {

    // JS代碼到此為止  
    };

1.2 驗(yàn)證處理

  1. 獲取相關(guān)的元素DOM對(duì)象
      // 獲取輸入框
      var txt_submit = document.getElementById("txt_submit");

      // 獲取提交按鈕
      var btn_submit = document.getElementById("btn_submit");

      // 獲取信息span
      var msg = document.getElementById("msg");
  1. 給提交按鈕添加單擊事件清焕,并且在事件中驗(yàn)證輸入框的值。
btn_submit.onclick = function() {
        // 獲取文本內(nèi)容
        var strText = txt_submit.value;

        // 必填項(xiàng)驗(yàn)證
        if ("" == strText) {
          msg.innerHTML = "該輸入項(xiàng)不能為空";
          return false;
        }

        // 最小長(zhǎng)度驗(yàn)證
        if (strText.length < 6) {
          msg.innerHTML = "輸入長(zhǎng)度不能小于6";
          return false;
        }

        // 最大長(zhǎng)度驗(yàn)證
        if (strText.length > 10) {
          msg.innerHTML = "輸入長(zhǎng)度不能大于10";
          return false;
        }

        // 漢字驗(yàn)證
        if (!/^[\u4e00-\u9fa5]+$/.test(strText)) {
          msg.innerHTML = "必須輸入漢字";
          return false;
        }

        // 錯(cuò)誤信息清空   
        msg.innerHTML = "";
        return true;

      };

2. 升級(jí)版

現(xiàn)在很多驗(yàn)證不止在提交按鈕時(shí)進(jìn)行祭犯,在輸入框輸入時(shí)實(shí)時(shí)驗(yàn)證耐朴,我們把上面的版本升級(jí)一下。

  1. 把輸入框的驗(yàn)證單獨(dú)做成一個(gè)有名字的函數(shù)盹憎。
      // 輸入框驗(yàn)證
      function check() {
        // 獲取文本內(nèi)容
        var strText = txt_submit.value;

        // 必填項(xiàng)驗(yàn)證
        if ("" == strText) {
          msg.innerHTML = "該輸入項(xiàng)不能為空";
          return false;
        }

        // 最小長(zhǎng)度驗(yàn)證
        if (strText.length < 6) {
          msg.innerHTML = "輸入長(zhǎng)度不能小于6";
          return false;
        }

        // 最大長(zhǎng)度驗(yàn)證
        if (strText.length > 10) {
          msg.innerHTML = "輸入長(zhǎng)度不能大于10";
          return false;
        }

        // 漢字驗(yàn)證
        if (!/^[\u4e00-\u9fa5]+$/.test(strText)) {
          msg.innerHTML = "必須輸入漢字";
          return false;
        }

        // 錯(cuò)誤信息清空   
        msg.innerHTML = "";
        return true;

      };
  1. 把函數(shù)的名字分別賦給提交按鈕的單擊事件和輸入框的鍵盤(pán)事件。
      btn_submit.onclick = check;
      txt_submit.onkeyup = check;

以上兩步升級(jí)大功告成铐刘。

友情提示
上面的兩份代碼代碼使用對(duì)比工具對(duì)比陪每,能夠清晰看出二者差異。


如有任何疑問(wèn)镰吵,歡迎下面留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末檩禾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疤祭,更是在濱河造成了極大的恐慌盼产,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勺馆,死亡現(xiàn)場(chǎng)離奇詭異戏售,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)草穆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)灌灾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悲柱,你說(shuō)我怎么就攤上這事锋喜。” “怎么了豌鸡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嘿般,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涯冠,道長(zhǎng)炉奴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任蛇更,我火速辦了婚禮盆佣,結(jié)果婚禮上往堡,老公的妹妹穿的比我還像新娘。我一直安慰自己共耍,他們只是感情好虑灰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著痹兜,像睡著了一般穆咐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上字旭,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天对湃,我揣著相機(jī)與錄音,去河邊找鬼遗淳。 笑死拍柒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屈暗。 我是一名探鬼主播拆讯,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼养叛!你這毒婦竟也來(lái)了种呐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弃甥,失蹤者是張志新(化名)和其女友劉穎爽室,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體淆攻,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阔墩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓶珊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戈擒。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖艰毒,靈堂內(nèi)的尸體忽然破棺而出筐高,到底是詐尸還是另有隱情,我是刑警寧澤丑瞧,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布柑土,位于F島的核電站,受9級(jí)特大地震影響绊汹,放射性物質(zhì)發(fā)生泄漏稽屏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一西乖、第九天 我趴在偏房一處隱蔽的房頂上張望狐榔。 院中可真熱鬧坛增,春花似錦、人聲如沸薄腻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庵楷。三九已至罢艾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尽纽,已是汗流浹背咐蚯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弄贿,地道東北人春锋。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像差凹,于是被迫代替她去往敵國(guó)和親期奔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容