JavaScript 验证 API

约束验证 dom 方法

方法描述
checkValidity()如果 input 元素中的数据是合法的返回 true,否则返回 false
setCustomValidity()设置 input 元素的 validation Message 属性
用于自定义错误提示信息的方法

使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成 true,则 checkValidity 总是会返回 false

如果要重新判断需要取消自定义提示,方式如下

setCustomValidity('') 
setCustomValidity(null)
setCustomValidity(undefined)

下面的范例如果输入信息不合法,则返回错误信息

<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,显示一个信息

<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,显示一个信息

<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>

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/course/7_498

目录选择