JavaScript 驗證 API
                  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>
嘗試一下 »