国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
約束API
翻譯自定義表單驗證消息
方法一:利用瀏覽器的語言設(shè)置
方法二:在本地存儲中設(shè)置首選語言
總結(jié)
參考
首頁 web前端 css教學(xué) 為HTML表單創(chuàng)建自定義翻譯消息的兩種方法

為HTML表單創(chuàng)建自定義翻譯消息的兩種方法

Mar 08, 2025 am 09:57 AM

Two Ways to Create Custom Translated Messaging for HTML Forms

HTML表單內(nèi)置了驗證表單輸入和其他控件的方法,這些方法基於預(yù)定義規(guī)則,例如:設(shè)置輸入為必填項、設(shè)置範(fàn)圍滑塊的最小值和最大值約束,或為電子郵件輸入設(shè)置模式以檢查格式是否正確。原生HTML和瀏覽器為我們提供了許多“免費”功能,無需複雜的腳本即可驗證表單提交。

如果某些內(nèi)容未正確驗證?我們會得到“免費”的錯誤消息來顯示給使用表單的人。

這些通常足以完成工作,但如果我們需要更具體的錯誤內(nèi)容,我們可能需要覆蓋這些消息——尤其是在我們需要跨瀏覽器處理翻譯內(nèi)容的情況下。以下是它的工作原理。

約束API

約束API用於覆蓋默認(rèn)的HTML表單驗證消息,並允許我們定義自己的錯誤消息。 Chris Ferdinandi甚至在CSS-Tricks上對此進行了詳細(xì)介紹。

簡而言之,約束API旨在提供對輸入元素的控制。 API可以在單個輸入元素或直接從表單元素調(diào)用。

例如,假設(shè)我們正在使用這個簡單的表單輸入:

<label for="fullName">Full Name</label>
<input type="text" id="fullName" required>
<button type="submit" id="btn">Submit</button>

我們可以通過獲取fullNameInput元素並在其上調(diào)用setCustomValidity()方法,然後向其傳遞自定義消息來設(shè)置我們自己的錯誤消息:

const fullNameInput = document.getElementById("fullName");
fullNameInput.setCustomValidity("This is a custom error message");

單擊提交按鈕時,指定的郵件將顯示在默認(rèn)郵件的位置。

翻譯自定義表單驗證消息

自定義錯誤消息的一個主要用例是更好地處理國際化。我們可以通過兩種主要方法來實現(xiàn)這一點。還有其他方法可以實現(xiàn)這一點,但我在這裡介紹的是我認(rèn)為最直接的方法。

方法一:利用瀏覽器的語言設(shè)置

第一種方法是使用瀏覽器語言設(shè)置。我們可以從瀏覽器獲取語言設(shè)置,然後檢查我們是否支持該語言。如果我們支持該語言,則可以返回翻譯後的消息。如果我們不支持該特定語言,則提供備用響應(yīng)。

繼續(xù)使用之前的HTML,我們將創(chuàng)建一個翻譯對象來保存您首選的語言(在腳本標(biāo)籤內(nèi))。在這種情況下,該對象支持英語、斯瓦希里語和阿拉伯語。

const translations = {
  en: {
    required: "Please fill this",
    email: "Please enter a valid email address",

  },
  sw: {
    required: "Sehemu hii inahitajika",
    email: "Tafadhali ingiza anwani sahihi ya barua pepe",
  },
  ar: {
    required: "??? ?????? ??????",
    email: "???? ????? ????? ???? ???????? ????",
  }
};

接下來,我們需要提取對象的標(biāo)籤並將它們與瀏覽器的語言進行匹配。

// 翻譯對象
const supportedLangs = Object.keys(translations);
const getUserLang = () => {
  // 拆分以獲取第一部分,瀏覽器通常為 en-US
  const browserLang = navigator.language.split('-')[0];
  return supportedLangs.includes(browserLang) ? browserLang :'en';
};

// 翻譯后的錯誤消息
const errorMsgs = translations[getUserLang()];
// 表單元素
const form = document.getElementById("myForm");
// 按鈕元素
const btn = document.getElementById("btn");
// 名稱輸入
const fullNameInput = document.getElementById("fullName");
// 錯誤消息的包裝器
const errorSpan = document.getElementById("error-span");

// 單擊按鈕時……
btn.addEventListener("click", function (event) {
  // 如果名稱輸入不存在……
  if (!fullNameInput.value) {
    // ……拋出錯誤
    fullNameInput.setCustomValidity(errorMsgs.required);
    // 為樣式設(shè)置輸入的 .error 類
    fullNameInput.classList.add("error");
  }
});

這裡的getUserLang()函數(shù)進行比較並返回支持的瀏覽器語言或英語的備用語言。運行示例,當(dāng)單擊按鈕時,應(yīng)顯示自定義錯誤消息。

方法二:在本地存儲中設(shè)置首選語言

第二種方法是使用在localStorage中用戶定義的語言設(shè)置。換句話說,我們要求用戶首先從包含可選<option></option>標(biāo)籤的<select></select>元素中選擇他們的首選語言。一旦做出選擇,我們將他們的偏好保存到localStorage,以便我們可以引用它。

<label for="fullName">Full Name</label>
<input type="text" id="fullName" required>
<button type="submit" id="btn">Submit</button>

有了<select></select>元素,我們可以創(chuàng)建一個腳本,該腳本檢查localStorage並使用保存的偏好來返回翻譯後的自定義驗證消息:

const fullNameInput = document.getElementById("fullName");
fullNameInput.setCustomValidity("This is a custom error message");

該腳本將初始值設(shè)置為當(dāng)前選定的選項,將該值保存到localStorage,然後根據(jù)需要從localStorage中檢索它。同時,該腳本在<select></select>元素觸發(fā)的每個更改事件中更新選定的選項,同時保持原始回退以確保良好的用戶體驗。

如果我們打開DevTools,當(dāng)選擇語言偏好時,我們將看到用戶的首選值在localStorage中可用。

總結(jié)

就是這樣!我希望這個快速的小技巧能有所幫助。我知道我以前在弄清楚如何使用約束API時希望擁有它。這是網(wǎng)絡(luò)上那些你知道可能的事情之一,但確切的方法很難找到。

參考

  • 表單驗證系列(Chris Ferdinandi)
  • 了解偽類選擇器(Chris Coyier)
  • 約束驗證(MDN)
  • 客戶端表單驗證(MDN)

以上是為HTML表單創(chuàng)建自定義翻譯消息的兩種方法的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

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整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個根據(jù)目標(biāo)瀏覽器範(fàn)圍自動為CSS屬性添加廠商前綴的工具。 1.它解決了手動維護前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

什麼是CSS計數(shù)器? 什麼是CSS計數(shù)器? Jun 19, 2025 am 12:34 AM

csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

CSS:何時重要(何時不)? CSS:何時重要(何時不)? Jun 19, 2025 am 12:27 AM

在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。 1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。 2.值中的十六進制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。 3.URL區(qū)分大小寫,可能導(dǎo)致文件加載問題。 4.自定義屬性(變量)區(qū)分大小寫,使用時需注意大小寫一致。

什麼是圓錐級函數(shù)? 什麼是圓錐級函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

See all articles