如何在提交表单之前要求所有输入字段?
How to make all input fields be required before submitting a form?
我是 JavaScript 的新人。
所以我想做的是使用纯 JavaScript 来检查表单输入字段的有效性。问题是,我正在使用 span 在输入的右侧创建“*Required”,但只有一个出现在姓氏中。
我想让两个字段在提交表单时为空的输入显示跨度“*Required”。此外,当只有一个为空时,仅将那个设为“*必需”。
感谢您给我的任何反馈和建议。
<!DOCTYPE html>
<html>
<title></title>
<head>
</head>
<body>
<form id = fourm>
<label>First Name:</label><br>
<input id="id1" type="text" name="firstname"><span id="demo" style="color:red"></span><br>
<label>Last Name:</label><br>
<input id="id2" type="text" name ="lastname"><span id="dema" style="color:red"></span><br>
<br><button onclick="myFunction()">Submit</button>
</form>
</body>
</html>
<script>
function myFunction() {
if (!document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event){
event.preventDefault() });
} else if (document.getElementById("id1").value){
document.getElementById("demo").innerHTML = "";
return fourm;
}
}
function myFunction() {
if (!document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event){
event.preventDefault() });
} else if (document.getElementById("id2").value){
document.getElementById("dema").innerHTML = "";
return fourm;
}
}
</script>
您有重复的函数定义!
函数声明在语义上等同于下面的函数表达式。
var myFunction = function() {}
如果您的编码如下
myFunction = 1;
var myFunction = function() {/*1*/};
var myFunction = function() {/*2*/};
由于变量提升,它会被 JS 引擎转换为如下等价物
var myFunction;
myFunction = 1;
myFunction = function() {/*1*/};
myFunction = function() {/*2*/};
虽然函数声明在 javascript 中被提升到顶部,因此允许您在声明它们之前调用它们。
当你有重复的函数声明时,就像你的情况一样,第一个声明由于提升而被第二个函数声明替换,你失去了第一个中的逻辑。
对于以下代码
myFunction =1;
function myFunction() {/*1*/};
function myFunction() {/*2*/};
你可以这样想。
var myFunction; //Hoist the variable to top
myFunction = function() {/*1*/};//Hoist the first function to top and assign
myFunction = function() {/*2*/};//Hoist the second function to top and assign
myFunction = 1; //Assignment order changes
对于函数声明,函数完全提升到顶部,而不考虑它在词法定义的位置。对于函数表达式,只有函数变量被提升,函数赋值保留在词法位置。
function myFunction() {
//Reset error messages
document.getElementById("demo").innerHTML = "";
document.getElementById("dema").innerHTML = "";
if (!document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event) {
event.preventDefault()
});
} else if (document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "";
}
if (!document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event) {
event.preventDefault()
});
} else if (document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "";
}
return false;
}
<!DOCTYPE html>
<html>
<title></title>
<head>
</head>
<body>
<form id="fourm">
<label>First Name:</label>
<br>
<input id="id1" type="text" name="firstname"><span id="demo" style="color:red"></span>
<br>
<label>Last Name:</label>
<br>
<input id="id2" type="text" name="lastname"><span id="dema" style="color:red"></span>
<br>
<br>
<button onclick="myFunction()">Submit</button>
</form>
</body>
</html>
我是 JavaScript 的新人。
所以我想做的是使用纯 JavaScript 来检查表单输入字段的有效性。问题是,我正在使用 span 在输入的右侧创建“*Required”,但只有一个出现在姓氏中。
我想让两个字段在提交表单时为空的输入显示跨度“*Required”。此外,当只有一个为空时,仅将那个设为“*必需”。
感谢您给我的任何反馈和建议。
<!DOCTYPE html>
<html>
<title></title>
<head>
</head>
<body>
<form id = fourm>
<label>First Name:</label><br>
<input id="id1" type="text" name="firstname"><span id="demo" style="color:red"></span><br>
<label>Last Name:</label><br>
<input id="id2" type="text" name ="lastname"><span id="dema" style="color:red"></span><br>
<br><button onclick="myFunction()">Submit</button>
</form>
</body>
</html>
<script>
function myFunction() {
if (!document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event){
event.preventDefault() });
} else if (document.getElementById("id1").value){
document.getElementById("demo").innerHTML = "";
return fourm;
}
}
function myFunction() {
if (!document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event){
event.preventDefault() });
} else if (document.getElementById("id2").value){
document.getElementById("dema").innerHTML = "";
return fourm;
}
}
</script>
您有重复的函数定义!
函数声明在语义上等同于下面的函数表达式。
var myFunction = function() {}
如果您的编码如下
myFunction = 1;
var myFunction = function() {/*1*/};
var myFunction = function() {/*2*/};
由于变量提升,它会被 JS 引擎转换为如下等价物
var myFunction;
myFunction = 1;
myFunction = function() {/*1*/};
myFunction = function() {/*2*/};
虽然函数声明在 javascript 中被提升到顶部,因此允许您在声明它们之前调用它们。
当你有重复的函数声明时,就像你的情况一样,第一个声明由于提升而被第二个函数声明替换,你失去了第一个中的逻辑。
对于以下代码
myFunction =1;
function myFunction() {/*1*/};
function myFunction() {/*2*/};
你可以这样想。
var myFunction; //Hoist the variable to top
myFunction = function() {/*1*/};//Hoist the first function to top and assign
myFunction = function() {/*2*/};//Hoist the second function to top and assign
myFunction = 1; //Assignment order changes
对于函数声明,函数完全提升到顶部,而不考虑它在词法定义的位置。对于函数表达式,只有函数变量被提升,函数赋值保留在词法位置。
function myFunction() {
//Reset error messages
document.getElementById("demo").innerHTML = "";
document.getElementById("dema").innerHTML = "";
if (!document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event) {
event.preventDefault()
});
} else if (document.getElementById("id1").value) {
document.getElementById("demo").innerHTML = "";
}
if (!document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "*Required";
document.getElementById("fourm").addEventListener("click", function(event) {
event.preventDefault()
});
} else if (document.getElementById("id2").value) {
document.getElementById("dema").innerHTML = "";
}
return false;
}
<!DOCTYPE html>
<html>
<title></title>
<head>
</head>
<body>
<form id="fourm">
<label>First Name:</label>
<br>
<input id="id1" type="text" name="firstname"><span id="demo" style="color:red"></span>
<br>
<label>Last Name:</label>
<br>
<input id="id2" type="text" name="lastname"><span id="dema" style="color:red"></span>
<br>
<br>
<button onclick="myFunction()">Submit</button>
</form>
</body>
</html>