HTML javascript 表单 - 我可以通过哪些其他方式使用表单验证来编写这个 javascript 函数
Posted
技术标签:
【中文标题】HTML javascript 表单 - 我可以通过哪些其他方式使用表单验证来编写这个 javascript 函数【英文标题】:HTML javascript form - what other ways can I code this javascript function with form validation 【发布时间】:2021-06-17 21:36:29 【问题描述】:我编写了以下代码来获取要在页面上显示的表单数据。我可以使用哪些其他方法来重写以下代码以包含表单验证。 我是 javascript 的初学者,只需要一些指导或代码 sn-p 来帮助。
JSFiddle 链接:https://jsfiddle.net/jphfzgdq/
<head>
<script type="text/javascript">
function collect(frm)
document.getElementById("results").innerhtml+="Name: "+frm.nm.value+"<br>Age: "+frm.ag.value+"<hr>"
frm.reset();
</script>
<style>
/* #entries,#resultsfloat:left */
</style>
</head>
<body>
<div id="entries">
<form name ="myform">
Enter name: <input type="text" name="nm"/><br>
Enter age: <input type="text" name="ag"/><br>
<input type="button" value="display" onclick="collect(this.form)"/>
</form>
</div>
<div id="results"></div>
</body>
【问题讨论】:
【参考方案1】:我想这就是你想要的
<head>
<script type="text/javascript">
var totalAge = 0;
function collect(frm)
var name = frm.nm.value;
var age = parseInt(frm.ag.value);
totalAge += age;
try
if (name == "" || name == null)
alert('Enter your name');
else if (age == "" || age == null || age == NaN)
alert('Enter a valid age');
else
document.getElementById("results").innerHTML+="Name: "+ name +"<br>Age: "+ age + "<br>total age: "+ totalAge +"<hr>"
frm.reset();
catch (e)
console.log(e);
</script>
<style>
/* #entries,#resultsfloat:left */
</style>
</head>
<body>
<div id="entries">
<form name ="myform">
Enter name: <input type="text" name="nm"/><br>
Enter age: <input type="number" name="ag"/><br>
<input type="button" value="display" onclick="collect(this.form)"/>
</form>
</div>
<div id="results"></div>
</body>
【讨论】:
感谢您的帮助。 还有一个查询是,如果您想获得每次提交表单时输入的年龄数字的总数。即拐角处的运行总数类似于购物车总数@Manu Sampablo @Testing999 我已经进行了必要的更改。它们是:1- 添加总年龄变量 2- 每次提交表单时将年龄添加到totalAge
var 3- 设置年龄 type="number"
而不是 type="text"
(在表单中)
@Testing999 我正在测试,一切正常,请确保您没有无意中输入字母【参考方案2】:
我只是做了一个简单的年龄验证。
function collect(frm)
if (Number(frm.ag.value) >= 18)
document.getElementById("results").innerHTML +=
"Name: " + frm.nm.value + "<br>Age: " + frm.ag.value + "<hr>";
document.getElementById("warn").textContent = "";
frm.reset();
else
document.getElementById("warn").textContent =
"18+ Are only allowed!";
#warn
color: red;
<div id="entries">
<form name="myform">
Enter name: <input type="text" name="nm" /><br> Enter age: <input type="number" name="ag" /><br>
<input type="button" value="display" onclick="collect(this.form)" />
</form>
</div>
<h4 id="warn"></h4>
<div id="results"></div>
编辑:
你没有以正确的方式做这件事,所以试图让它变得更好。
const nameInput = document.getElementById("nameInput");
const ageInput = document.getElementById("ageInput");
const btnInput = document.getElementById("btnInput");
const results = document.getElementById("results");
const warn = document.getElementById("warn");
const ageCounter = document.getElementById("totalAgeCounter");
let ageCount = 0;
function collectData()
if (nameInput.value !== "" && Number(ageInput.value) >= 18)
results.innerHTML += `Name: $nameInput.value <br>Age: $ageInput.value <hr>`;
ageCount += Number(ageInput.value);
ageCounter.textContent = ageCount;
warn.textContent = "";
nameInput.value = "";
ageInput.value = "";
else
warn.textContent = "18+ Are only allowed!";
btnInput.addEventListener("click", collectData);
#warn
color: red;
#totalAgeCounter
width: 50px;
height: 50px;
display: grid;
place-items: center;
background-color: blue;
position: absolute;
top: 20px;
right: 20px;
color: #fff;
border-radius: 50%;
font-weight: bolder;
font-size: 18px;
<div id="entries">
<form name="myform">
Enter name:
<input type="text" id="nameInput" />
<br /> Enter age:
<input type="number" id="ageInput" />
<br />
<input type="button" value="display" id="btnInput" />
</form>
</div>
<h4 id="warn"></h4>
<div id="results"></div>
<div id="totalAgeCounter"></div>
【讨论】:
感谢您的帮助。还有一个问题是,您是否想在每次提交表单时获取输入的年龄数字的总数。即拐角处类似于购物车总数的运行总数 @Testing999 抱歉回复晚了,我已对上述答案进行了必要的编辑,希望对您有所帮助。现在代码更有条理了。 我能问一下你为什么使用 .textContent @Testing999 如果我们想添加一些HTML
,那么我们使用innerHTML
,但如果我们只想添加一些文本,我们可以使用textContent
。我们可以在textContent
的地方使用innerHTML
。同样textContent
返回元素内的文本,但innerHTML
返回带有HTML
标签的文本。
@Testing999 这些文章不错:FirstSecond以上是关于HTML javascript 表单 - 我可以通过哪些其他方式使用表单验证来编写这个 javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章
通过 HTML 表单 + JavaScript 向 MailChimp API 提交 JSON 结构
如何使 PHP 或 JavaScript 生成 HTML 表单
HTML 表单中的 onClick JavaScript 函数