如何为多个输入字段实现单一验证方法?
How to implement single validate method for multiple input fields?
我在一个表单元素中实现了多个输入域,所以在表单内部可能是一个输入域,也可能是多个输入域。所以我想实现一种验证方法。对于一个phone number, email, age, date等。所以将来可能会形成有15个输入字段。所以在那种情况下,on 方法应该处理所有输入字段。
示例代码如下:
<form onsubmit="return false">
<div>
<label for="">Name</label>
<input type="text" name="fname" id="fname" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Middle Name</label>
<input type="text" name="mname" id="mname" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Age</label>
<input type="number" name="age" id="age" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Email</label>
<input type="text" name="email" id="email" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Mobile</label>
<input type="number" name="mobile" id="number" onkeyup=handleInput(this)>
</div>
<div>
<button onclick=submitData()>Submit</button>
</div>
</form>
<script>
var data={ };
function handleInput(e){
data[e.name] = e.value;
}
function submitData(){
console.log(data); //return object
}
</script>
演示
https://jsfiddle.net/varunPes/2fdoxanu/5/
是否可以通过一个函数来处理验证?如果有人有任何想法,请分享,提前谢谢。
"validation"这个词有点含糊,
您可以使用基本的 html 表单验证 api [ https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation ] 并通过传递属性
在 html 中设置必要的验证
另一种方法是像下面这样创建一个嵌套的 handleInput 函数,并使用 switch case 来验证。
<form onsubmit="return false">
<div>
<label for="">Name</label>
<input type="text" name="fname" id="fname" onkeyup=handleInput('text')(this)>
</div>
<div>
<label for="">Middle Name</label>
<input type="text" name="mname" id="mname" onkeyup=handleInput('text')(this)>
</div>
<div>
<label for="">Age</label>
<input type="number" name="age" id="age" onkeyup=handleInput('number')(this)>
</div>
<div>
<label for="">Email</label>
<input type="text" name="email" id="email" onkeyup=handleInput('email')(this)>
</div>
<div>
<label for="">Mobile</label>
<input type="number" name="mobile" id="number" onkeyup=handleInput('phone')(this)>
</div>
<div>
<button onclick=submitData()>Submit</button>
</div>
</form>
<script>
var data={ };
const handleInput = (type) => (e) => { //using arrow functions and function expression for easier readability
switch(type){
case "text" : //do logic here
break;
case "number" : //logic here
break;
case "email" : ///..etc
break;
}
data[e.name] = e.value;
}
function submitData(){
console.log(data); //return object
}
</script>
如果您愿意,您可以只使用 switch(e.target.id) 并在内部 switch case 中应用逻辑,但是您应该使用每个新的 id 和 input[=12= 修改 case ]
我在一个表单元素中实现了多个输入域,所以在表单内部可能是一个输入域,也可能是多个输入域。所以我想实现一种验证方法。对于一个phone number, email, age, date等。所以将来可能会形成有15个输入字段。所以在那种情况下,on 方法应该处理所有输入字段。
示例代码如下:
<form onsubmit="return false">
<div>
<label for="">Name</label>
<input type="text" name="fname" id="fname" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Middle Name</label>
<input type="text" name="mname" id="mname" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Age</label>
<input type="number" name="age" id="age" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Email</label>
<input type="text" name="email" id="email" onkeyup=handleInput(this)>
</div>
<div>
<label for="">Mobile</label>
<input type="number" name="mobile" id="number" onkeyup=handleInput(this)>
</div>
<div>
<button onclick=submitData()>Submit</button>
</div>
</form>
<script>
var data={ };
function handleInput(e){
data[e.name] = e.value;
}
function submitData(){
console.log(data); //return object
}
</script>
演示 https://jsfiddle.net/varunPes/2fdoxanu/5/
是否可以通过一个函数来处理验证?如果有人有任何想法,请分享,提前谢谢。
"validation"这个词有点含糊, 您可以使用基本的 html 表单验证 api [ https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation ] 并通过传递属性
在 html 中设置必要的验证另一种方法是像下面这样创建一个嵌套的 handleInput 函数,并使用 switch case 来验证。
<form onsubmit="return false">
<div>
<label for="">Name</label>
<input type="text" name="fname" id="fname" onkeyup=handleInput('text')(this)>
</div>
<div>
<label for="">Middle Name</label>
<input type="text" name="mname" id="mname" onkeyup=handleInput('text')(this)>
</div>
<div>
<label for="">Age</label>
<input type="number" name="age" id="age" onkeyup=handleInput('number')(this)>
</div>
<div>
<label for="">Email</label>
<input type="text" name="email" id="email" onkeyup=handleInput('email')(this)>
</div>
<div>
<label for="">Mobile</label>
<input type="number" name="mobile" id="number" onkeyup=handleInput('phone')(this)>
</div>
<div>
<button onclick=submitData()>Submit</button>
</div>
</form>
<script>
var data={ };
const handleInput = (type) => (e) => { //using arrow functions and function expression for easier readability
switch(type){
case "text" : //do logic here
break;
case "number" : //logic here
break;
case "email" : ///..etc
break;
}
data[e.name] = e.value;
}
function submitData(){
console.log(data); //return object
}
</script>
如果您愿意,您可以只使用 switch(e.target.id) 并在内部 switch case 中应用逻辑,但是您应该使用每个新的 id 和 input[=12= 修改 case ]