一个检测表单数据的JavaScript实例

时间:2022-09-21 14:09:00

一个检测表单数据的JavaScript实例,很简单,很实用,感兴趣的朋友可以看看

?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>每天一个JavaScript实例-检测表单数据</title>
<style>
  [role="alert"]{
    background-color: #fcc;
    font-weight: bold;
    padding:5px;
    border:1px dashed #000;
  }
  div{
    margin:10px 0;
    padding:5px;
    width:400px;
    background-color: #fff;
  }
</style>
 
<script>
window.onload = function(){
  document.getElementById("thirdfield").onchange = validateField;
  document.getElementById("firstfield").onblur = mandatoryField;
  document.getElementById("testform").onsubmit = finalCheck;
}
function validateField(){
  removeAlert();
  if(!isNaN(parseFloat(this.value))){
    resetField(this);
  }else{
    badField(this);
    generateAlert("You entered an invalid value in Third Field. only numeric values such as 105 or 3.45 are allowed");
  }
}
function removeAlert(){
  var msg = document.getElementById("msg");
  if(msg){
    document.body.removeChild(msg);
  }
}
function resetField(elem){
  elem.parentNode.setAttribute("style","background-color:#fff");
  var valid = elem.getAttribute("aria-invalid");
  if(valid) elem.removeAttribute("aria-invalid");
}
function badField(elem){
  elem.parentNode.setAttribute("style","background-color#fee");
  elem.setAttribute("aria-invalid","true");
}
function generateAlert(txt){
  var txtNd = document.createTextNode(txt);
  msg = document.createElement("div");
  msg.setAttribute("role","alert");
  msg.setAttribute("id","msg");
  msg.setAttribute("class","alert");
 
  msg.appendChild(txtNd);
  document.body.appendChild(msg);
}
 
function mandatoryField(){
  removeAlert();
  if(this.value.length > 0 ){
    resetField(this);
  }else{
    badField(this);
    generateAlert("You must enter a value into First Field");
  }
}
function finalCheck(){
  //console.log("aaa");
  removeAlert();
 
  var fields =document.querySelectorAll('input[aria-invalid="true"]');
  //var fields =document.querySelectorAll("input[aria-invalid='true']");//错误!!!
  console.log(fields);
  if(fields.length > 0){
    generateAlert("You have incorrect fields entries that must be fixed before you can submit this form");
    return false;
  }
}
</script>
 
</head>
 
<body>
<form id = "testform">
  <div>
    <label for="firstfield">*first Field:</label><br />
    <input id="firstfield" name = "firstfield" type = "text" aria-required = "true" />
  </div>
 
  <div>
    <label for="secondfield">Second Field:</label><br />
    <input id="secondfield" name = "secondfield" type = "text" />
  </div>
 
  <div>
    <label for="thirdfield">Third Field(numeric):</label><br />
    <input id="thirdfield" name = "thirdfield" type = "text" />
  </div>
 
  <div>
    <label for="fourthfield">Fourth Field:</label><br />
    <input id="fourthfield" name = "fourthfield" type = "text" />
  </div>
 
  <input type="submit" value = "Send Data" />
</form>
 
</body>
</html>