JavaScript 能够用于验证 HTML 表单。
一、获取表单的值
1. 输入框
通过 元素.value
可以获得输入框中的值。
1
| var input_text = document.getElementById(元素id).value;
|
如果要修改元素的输入框值,请使用以下方法:
1 2
| var input_text = document.getElementById(元素id); input_text.value
|
2. 单选多选框
1 2
| <input type="radio" name="sex" value="man" id="man"> 男 <input type="radio" name="sex" value="woman" id="woman"> 女
|
此时通过 value 将只能获得固定值。
1 2
| document.getElementById("man").value document.getElementById("woman").value
|
正确的做法是:通过 checked 获得该选项是否被选中。
1
| document.getElementById(选项id).checked
|
二、前端密码 MD5 加密
1. md5 与加密
2. blueimp-md5 第三方类库
在 HTML 文档中引入 md5 库
1
| <script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.min.js"></script>
|
获取最新链接方法:
在公共 CDN 中搜索 blueimp-md5
blueimp-md5 (v2.18.0) - JavaScript MD5 implementation. | BootCDN
3. md5 加密
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <form action="#" method="POST"> <span>用户:</span> <input type="text" id="name" name="name"> <br> <span>密码:</span> <input type="password" id="password" name="password"> <br> <input type="submit" id="submit" value="提交"> </form>
<script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.min.js"></script>
<script> document.getElementById("submit").onclick = function(){fun()}; function fun() { let password = document.getElementById("password"); password.value = md5(password.value); } </script>
|
通过 md5(值) 将密码加密。
4. 双密码框
只有设置了 name 的 input 才能在提交表单时传递它们的值。因此可以设置两个密码框,一个用于接收用户密码,另一个用于计算加密结果并传递给服务器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <form action="#" method="POST"> <span>用户:</span> <input type="text" id="name" name="name"> <br> <span>密码:</span> <input type="password" id="inputPassword"> <br> <input type="hidden" id="password" name="password"> <br> <input type="submit" id="submit" value="提交"> </form>
<script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.min.js"></script>
<script> document.getElementById("submit").onclick = function(){fun()}; function fun() { let inputPassword = document.getElementById("inputPassword"); let password = document.getElementById("password"); password.value = md5(inputPassword.value); } </script>
|
这样做的好处有:
密码框不会在用户提交时突然改变其元素个数(例如密码个数为 6 位,但加密后变成 32 位),使加密过程对用户不透明
三、校验表单
1. 什么是数据验证
数据验证是为了确保用户输入的数据干净、正确且有用。验证主要有两种方式:
2. 实现方式
首先为表单设置事件
1
| <form onsubmit = "return fun()">
|
在函数中判断数据的有效性,并选择提交或拒绝提交
四、验证实例
1.验证表单是否被填写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html> <html> <head> <script> function validateForm() { var x = document.forms["myForm"]["fname"].value; if (x == "") { alert("必须填写姓名!"); return false; } } </script> </head> <body> <form name="myForm" action="/demo/action_page.php" onsubmit="return validateForm()" method="post"> 姓名:<input type="text" name="fname"> <input type="submit" value="提交"> </form> </body> </html>
|
2. 验证数字范围
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <!DOCTYPE html> <html> <head> <script> function myFunction() { var x, text;
x = document.getElementById("numb").value;
if (isNaN(x) || x < 1 || x > 10) { text = "输入无效"; } else { text = "输入有效"; } document.getElementById("demo").innerHTML = text; } </script> </head>
<body> <input id="numb"> <button type="button" onclick="myFunction()">提交</button> <p id="demo"></p> </body> </html>
|
五、表单 API
1. 方法
方法 |
描述 |
checkValidity() |
如果 input 元素包含有效数据,则返回 true |
setCustomValidity() |
设置 input 元素的 validationMessage 属性。 |
2. 属性
属性 |
描述 |
validity |
input 元素是否非法 |
validationMessage |
非法时浏览器显示的消息。 |
willValidate |
是否验证 input 元素。 |
3. 具体合法性属性
属性 |
描述 |
customError |
如果设置自定义的合法性消息 |
patternMismatch |
如果元素值不匹配其 pattern 属性,则为 true |
rangeOverflow |
如果元素值大于其 max 属性,则为 true |
rangeUnderflow |
如果元素值小于其 min 属性,则为 true |
stepMismatch |
当字段拥有 step 属性,且输入的 value 值不符合设定的间隔值时,则为 true |
tooLong |
如果元素值超过了其 maxLength 属性,则为 true |
typeMismatch |
如果数据的类型不匹配,则为 true |
valueMissing |
如果必填元素没有值,则为 true |
valid |
如果元素值是有效的,则为 true |
参考