JavaScript 驗證 API
約束驗證 DOM 方法
Property | Description |
---|---|
checkValidity() | 如果 input 元素中的數據是合法的返回 true,否則返回 false。 |
setCustomValidity() | 設置 input 元素的 validationMessage 屬性,用於自定義錯誤提示資訊的方法。 使用 setCustomValidity 設置了自定義提示後,validity.customError 就會變成true,則 checkValidity 總是會返回false。如果要重新判斷需要取消自定義提示,方式如下: setCustomValidity('') setCustomValidity(null) setCustomValidity(undefined) |
以下實例如果輸入資訊不合法,則返回錯誤資訊:
checkValidity() 方法
<input id="id1" type="number" min="100" max="300" required>
<button onclick="myFunction()">驗證</button>
<p id="demo"></p>
<script>
function myFunction() {
var inpObj = document.getElementById("id1");
if (inpObj.checkValidity() == false) {
document.getElementById("demo").innerHTML = inpObj.validationMessage;
}
}
</script>
約束驗證 DOM 屬性
屬性 | 描述 |
---|---|
validity | 布爾屬性值,返回 input 輸入值是否合法 |
validationMessage | 流覽器錯誤提示資訊 |
willValidate | 指定 input 是否需要驗證 |
Validity 屬性
input 元素的 validity 屬性包含一系列關於 validity 數據屬性:
屬性 | 描述 |
---|---|
customError | 設置為 true, 如果設置了自定義的 validity 資訊。 |
patternMismatch | 設置為 true, 如果元素的值不匹配它的模式屬性。 |
rangeOverflow | 設置為 true, 如果元素的值大於設置的最大值。 |
rangeUnderflow | 設置為 true, 如果元素的值小於它的最小值。 |
stepMismatch | 設置為 true, 如果元素的值不是按照規定的 step 屬性設置。 |
tooLong | 設置為 true, 如果元素的值超過了 maxLength 屬性設置的長度。 |
typeMismatch | 設置為 true, 如果元素的值不是預期相匹配的類型。 |
valueMissing | 設置為 true,如果元素 (required 屬性) 沒有值。 |
valid | 設置為 true,如果元素的值是合法的。 |
實例
如果輸入的值大於 100,顯示一個資訊:
rangeOverflow 屬性
<input id="id1" type="number" max="100">
<button onclick="myFunction()">驗證</button>
<p id="demo"></p>
<script>
function myFunction() {
var txt = "";
if (document.getElementById("id1").validity.rangeOverflow) {
txt = "輸入的值太大了";
}
document.getElementById("demo").innerHTML = txt;
}
</script>
如果輸入的值小於 100,顯示一個資訊:
rangeUnderflow 屬性
<input id="id1" type="number" min="100" required>
<button onclick="myFunction()">OK</button>
<p id="demo"></p>
<script>
function myFunction() {
var txt = "";
var inpObj = document.getElementById("id1");
if(!isNumeric(inpObj.value)) {
txt = "你輸入的不是數字";
} else if (inpObj.validity.rangeUnderflow) {
txt = "輸入的值太小了";
} else {
txt = "輸入正確";
}
document.getElementById("demo").innerHTML = txt;
}
// 判斷輸入是否為數字
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
</script>