ValidityState: typeMismatch 屬性
ValidityState 介面中只讀的 typeMismatch 屬性指示一個 <input> 元素的值(在使用者編輯後)不符合該元素 type 屬性設定的約束。
如果 type 屬性期望特定的字串,例如 email 和 url 型別,而值不符合該型別設定的約束,則 typeMismatch 屬性將為 true。
email 輸入型別期望一個或多個有效的電子郵件地址,具體取決於是否包含 multiple 屬性。有效的電子郵件地址包括電子郵件字首和域名,可包含或不包含頂級域名 (TLD)。如果 email 輸入的值不是空字串、單個有效電子郵件地址,或者(當存在 multiple 屬性時)一個或多個以逗號分隔的電子郵件地址,則會發生 typeMismatch。
url 輸入型別期望一個或多個有效的 URL,具體取決於是否包含 multiple 屬性。有效的 URL 包括協議,可選地帶有 IP 地址,或者可選的子域名、域名和頂級域名組合。如果 URL 輸入的值不是空字串、單個有效 URL,或者(當存在 multiple 屬性時)一個或多個以逗號分隔的 URL,則會發生 typeMismatch。
值
如果 ValidityState 不符合約束,則為 true 的布林值。
示例
輸入元素的型別不匹配
當透過 type 屬性期望的 value 與實際存在的資料之間存在脫節時,就會發生 typeMismatch。typeMismatch 只是眾多可能的錯誤之一,僅與 email 和 url 型別相關。當提供的值與其他輸入型別的期望值不匹配時,您會收到不同的錯誤。例如,如果 number 輸入值不是浮點數,則 badInput 為 true。如果 email 是 required 但為空,則 valueMissing 將為 true。
<pre id="log">Validation logged here...</pre>
<p>
<label>
Enter an email address:
<input id="emailInput" type="email" value="example.com" required />
</label>
</p>
input:invalid {
border: red solid 3px;
}
const emailInput = document.getElementById("emailInput");
const logElement = document.getElementById("log");
function log(text) {
logElement.innerText = text;
}
emailInput.addEventListener("input", () => {
emailInput.reportValidity();
if (emailInput.validity.valid) {
log("Input OK…");
} else if (emailInput.validity.typeMismatch) {
log("Input is not an email.");
} else {
log(`Validation failed: ${emailInput.validationMessage}`);
}
});
規範
| 規範 |
|---|
| HTML # dom-validitystate-typemismatch |
瀏覽器相容性
載入中…