公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript 21天入門:表單處理

admin
2024年10月24日 0:7 本文熱度 1124

在前端開發(fā)中,表單處理非常常見。

無論是用戶注冊、登錄,還是提交反饋等等,表單都是與用戶交互的重要方式。

使用 JavaScript,可以實現(xiàn)實時驗證、動態(tài)更新和異步提交等功能,用以提升用戶體驗。

典型的使用場景

常的使用場景有如下 5 種:

  1. 表單驗證:確保用戶輸入的數(shù)據(jù)符合預(yù)期格式和要求。

  2. 動態(tài)更新表單:根據(jù)用戶的輸入動態(tài)更新表單內(nèi)容。

  3. 提交表單數(shù)據(jù):通過 AJAX 提交表單數(shù)據(jù),而無需刷新頁面。

  4. 處理表單事件:處理各種表單事件,如 focusblurchange 等。

  5. 防止重復(fù)提交:防止用戶多次點擊提交按鈕導(dǎo)致表單重復(fù)提交。

咱們通過一個具體的例子來分別講述上述場景的使用。

假設(shè)我們現(xiàn)在有一個注冊頁面,要求用戶輸入郵箱,選擇國家、城市。

<form id="registrationForm">   <label for="email">郵箱:</label>   <input     type="email"     id="email"     name="email"     oninvalid="this.setCustomValidity('郵箱地址不能為空,請輸入有效的郵箱地址。')"     oninput="setCustomValidity('')"     required   />   <span id="emailError" class="error"></span><br />    <label for="country">選擇國家:</label>   <select     id="country"     name="country"     oninvalid="this.setCustomValidity('國家不能為空,請選擇國家')"     oninput="setCustomValidity('')"     required   >     <option value="">請選擇國家</option>     <option value="China">中國</option>     <option value="USA">美國</option>     <option value="Canada">加拿大</option>   </select>   <span id="countryError" class="error"></span><br />    <label for="city">選擇城市:</label>   <select     id="city"     name="city"     oninvalid="this.setCustomValidity('城市不能為空,請選擇城市')"     oninput="setCustomValidity('')"     required   >     <option value="">請選擇城市</option>   </select>   <span id="cityError" class="error"></span><br />    <button id="submitButton" type="submit">注冊</button> </form> 

看一下實現(xiàn)的效果:

表單驗證

為郵箱地址添加了一個驗證,如果輸入的字符串中不含有@符號,則有警告信息。

這一部分的實現(xiàn)則是通過添加 submit 事件的處理達成的。

document   .getElementById('registrationForm')   .addEventListener('submit', function (event) {     var isValid = true;      // 驗證郵箱格式     var email = document.getElementById('email').value;     var emailError = document.getElementById('emailError');     if (!email.includes('@')) {       emailError.textContent = '請輸入有效的郵箱地址';       isValid = false;     } else {       emailError.textContent = '';     }      // 驗證國家選擇     var country = document.getElementById('country').value;     var countryError = document.getElementById('countryError');     if (country === '') {       countryError.textContent = '請選擇國家';       isValid = false;     } else {       countryError.textContent = '';     }      // 驗證城市選擇     var city = document.getElementById('city').value;     var cityError = document.getElementById('cityError');     if (city === '') {       cityError.textContent = '請選擇城市';       isValid = false;     } else {       cityError.textContent = '';     }      // 如果驗證不通過,阻止表單提交     if (!isValid) {       event.preventDefault();     }   }); 

這里不僅驗證了郵箱,包括國家和城市的選擇也都進行了驗證。

動態(tài)更新表單

通過上述的例子,可能注意城市的信息是根據(jù)國家動態(tài)更新的,這一部分的動態(tài)更新的實現(xiàn)如下:

document.getElementById('country').addEventListener('change', function () {   var country = this.value;   var citySelect = document.getElementById('city');   citySelect.innerHTML = ''; // 清空之前的選項    var cities = {     China: ['北京', '上海', '廣州', '深圳'],     USA: ['New York', 'Los Angeles', 'Chicago', 'Houston'],     Canada: ['Toronto', 'Vancouver', 'Montreal', 'Calgary'],   };    var defaultOption = document.createElement('option');   defaultOption.value = '';   defaultOption.textContent = '請選擇城市';   citySelect.appendChild(defaultOption);    //添加其它城市作為選項   if (country && cities[country]) {     cities[country].forEach(function (city) {       var option = document.createElement('option');       option.value = city;       option.textContent = city;       citySelect.appendChild(option);     });   } }); 

提交表單數(shù)據(jù)

可以通過 XMLHttpRequest 或 fetch API 提交表單數(shù)據(jù),而無需刷新頁面。

這種方法通常用于異步提交表單數(shù)據(jù)(AJAX)。

document   .getElementById('registrationForm')   .addEventListener('submit', function (event) {     event.preventDefault(); // 阻止默認(rèn)提交行為      var formData = new FormData(this);     //假設(shè)有一個頁面為/submit,那么這里就是提交表單數(shù)據(jù)到這個頁面進行處理。     fetch('/submit', {       method: 'POST',       body: formData,     })       .then((response) => response.json())       .then((data) => console.log(data))       .catch((error) => console.error('Error:', error));   }); 

處理表單事件

JavaScript 可以處理各種表單事件,如 focusblurchange 等,以增強用戶體驗。

例如,當(dāng)輸入框獲得焦點時顯示提示信息,當(dāng)輸入框失去焦點時進行驗證。

var input = document.getElementById('email');  //當(dāng)輸入框獲得焦點時顯示提示信息 input.addEventListener('focus', function () {   document.getElementById('hint').textContent = '請輸入郵箱'; });  //當(dāng)輸入框失去焦點時檢查用戶名長度是否至少為 5 個字符。 input.addEventListener('blur', function () {   if (this.value.length < 5) {     alert('郵箱至少需要5個字符');   } }); 

防止重復(fù)提交

為了防止用戶多次點擊提交按鈕導(dǎo)致表單重復(fù)提交,可以在提交表單后禁用提交按鈕。

document   .getElementById('registrationForm')   .addEventListener('submit', function (event) {     var submitButton = document.getElementById('submitButton');     submitButton.disabled = true;   }); 

總結(jié)

前面已經(jīng)看完了實現(xiàn)效果了,再看一版美化過的界面。


該文章在 2024/10/24 9:26:31 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 精品亚洲国产成人av不卡 | 韩国精品视频福利一区二区 | 国产成人综合美国十次 | 国产无套嗨操在线观看 | 2025无码国产在线视频 | av无码精品一区二区三区宅噜 | 国产无套内射又大又猛又粗又爽 | 91视频播放 | 国产在线观看免费一区二区三区 | 91麻豆精品激情在线 | 成人国产精品毛片av一区 | 国产成人精品久久一区二区小说 | 成人免费一区二区三区视频 | 国产超精品无码不卡av | 国产欧美日韩综合精 | 91久久精品午夜一区二区 | 成人做受120秒试看试看视频 | 国产午夜精品无码一区二区 | 国产区香蕉精品系列在线观看不 | 国产无码在线观看视频 | 国产经典国语三级级在线电影 | 国产露脸无码a区久久蘑菇 国产乱aⅴ一区二区三区 | 成人无码区免费视频网站 | 国产一区二区无 | 国产精品亚洲夜色在线 | 国产一区二区三区在线免费 | 成人最新午夜 | 91精品国产乱码久久久久 | 国产高潮流白浆啊免费a片动态 | 国产欧美另类在线视频 | 18精品爽国产白嫩精品 | a级毛片视频免费观看不卡 a级毛片视频在线观看 | 精品人妻无码视频网站 | 精品午夜福利在线观看 | 国产精品亚洲五月天高清 | 国产一二三四2025精字窝 | 国产无码一区二区三区在线观看 | 91精产国品一二三区在线 | 国产美女精品一区二 | 国产毛片在线看 | 国产狂喷潮在线观看视频应用 |