如何在纠正错误后让我的表单使用新信息?(How do I get my form to use new information after errors are corrected?)

编程入门 行业动态 更新时间:2024-10-28 18:22:26
如何在纠正错误后让我的表单使用新信息?(How do I get my form to use new information after errors are corrected?)

我正在搜索,但我不是100%你如何重新提交这个,使用新的信息,我已经得到了所有的错误,并在适当的时候显示,但就如何再次点击提交按钮,然后它重新评估形式; 我该怎么办呢? 任何帮助,将不胜感激。

HTML

<!doctype html> <html> <head> <meta charset="utf-8"> <title>RATool</title> <link rel="stylesheet" type="text/css" href="cfcss.css"> <script src="cf.js"></script> </head> <body> <h1> Health Authority </h1> <h2> Contact Form </h2> <form> <fieldset> <label for="fname">First Name:</label> <input name="fname" id="fname" class="formfield" type="text"> <span id="errfname" class="error">*This is required</span> <span id="errfname1" class="error">*Name fields must have more than one character, and do not contain numbers or other non-allowed alphabetic characters. The only character the last name field should legitimately contain is a hyphen (e.g. Whittaker-Jones).</span> <span id="errfname2" class="error">*This can only contain alphabetic numbers and if desired, one hyphen</span> <br> <label for="sname">Surname:</label> <input name="sname" id="sname" class="formfield" type="text"> <span id="errsname" class="error">*This is required</span> <span id="errsname1" class="error">*Name fields must have more than one character, and do not contain numbers or other non-allowed alphabetic characters. The only character the last name field should legitimately contain is a hyphen (e.g. Whittaker-Jones).</span> <span id="errsname2" class="error">*This can only contain alphabetic numbers and if desired, one hyphen</span> <br> <label for="title">Title: </label> <select name="title" id="title"> <option value="Please select">Please select</option> <option value="Mr.">Mr.</option> <option value="Ms.">Ms.</option> <option value="Mrs.">Mrs.</option> <option value="Miss.">Miss.</option> <option value="Master.">Master.</option> </select> <span id="errtitle" class="error">*This is required</span> <br> <br> <br> <label for="HANo">Health Authority Number:</label> <input name="HANo" id="HANo" class="formfield"type="text"> <span id="errHANo" class="error">*This is required</span> <span id="errHANo2" class="error">*This must be in format ZHA123456 (ZHA followed by 6 numbers)</span> <br> <br> <label for="email">Email:</label> <input name="email" id="email" class="formfield"type="text"> <span id="erremail" class="error">*This is required</span> <span id="erremail2" class="error">*Please enter a valid email</span> <br> <br> <br> <label for="telno">Telephone Number:</label> <input name="telno" id="telno" class="formfield" type="text"> <span id="errtelno" class="error">* If a telephone number is entered, then it should contain only numbers, not letters, or other disallowed characters. A valid Zedland telephone number has 11 digits (no spaces)</span> <span id="errtelno1" class="error">*This must just be numbers</span> <br> <button onclick="checkForm()">Submit</button> </fieldset> </form> </body> </html>

JavaScript的

function checkForm(){ var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; } if (document.getElementById("fname").value == "" ) { document.getElementById("errfname").style.display = "inline"; document.getElementById("errfname").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("fname").value.length < 2 ) { document.getElementById("errfname1").style.display = "inline"; document.getElementById("errfname1").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("fname").value.length > 1) { checkFName(); e.preventDefault(); } if (document.getElementById("sname").value == "" ) { document.getElementById("errsname").style.display = "inline"; document.getElementById("errsname").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("sname").value.length < 2 ) { document.getElementById("errsname1").style.display = "inline"; document.getElementById("errsname1").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("sname").value.length > 1) { checkSName(); e.preventDefault(); } if (document.getElementById("title").value == "Please select" ) { document.getElementById("errtitle").style.display = "inline"; document.getElementById("errtitle").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("HANo").value == "" ) { document.getElementById("errHANo").style.display = "inline"; document.getElementById("errHANo").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("HANo").value.length > 0) { if (checkHANo()); e.preventDefault(); } if (document.getElementById("email").value == "" ) { document.getElementById("erremail").style.display = "inline"; document.getElementById("erremail").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("email").value.length > 0 ) { if(checkEmail()); e.preventDefault(); } if (document.getElementById("telno").value.length != 11 ) { document.getElementById("errtelno").style.display = "inline"; document.getElementById("errtelno").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("telno").value == /^\d+$/ ) { document.getElementById("errtelno1").style.display = "inline"; document.getElementById("errtelno1").style.visibility = "visible"; e.preventDefault(); } } function checkEmail(){ var email = document.getElementById('email'); var emailRegEx = /[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}/; if (!emailRegEx.test(email.value)) { document.getElementById("erremail2").style.display="inline"; document.getElementById("erremail2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkHANo(){ var HANo = document.getElementById("HANo"); var hanoRegEx = /[ZHA]\d{6}/; if (!hanoRegEx.test(HANo.value)) { document.getElementById("errHANo2").style.display = "inline"; document.getElementById("errHANo2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkFName(){ var first = document.getElementById("fname"); var firstRegEx = /^[a-zA-Z-]{2,40}$/; if (!firstRegEx.test(first.value)){ document.getElementById("errfname2").style.display = "inline"; document.getElementById("errfname2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkSName(){ var sec = document.getElementById("sname"); var secRegEx = /^[a-zA-Z-]{2,40}$/; if (!secRegEx.test(sec.value)){ document.getElementById("errsname2").style.display = "inline"; document.getElementById("errsname2").style.visibility = "visible"; return true; } e.preventDefault(); }

I'm search but i'm not 100% how you get this to resubmit, using new information, I've got all the errors up and showing as appropriate, but in terms of, how to hit the submit button again, and then it reassesses the form; how do i go about this? Any help would be appreciated.

html

<!doctype html> <html> <head> <meta charset="utf-8"> <title>RATool</title> <link rel="stylesheet" type="text/css" href="cfcss.css"> <script src="cf.js"></script> </head> <body> <h1> Health Authority </h1> <h2> Contact Form </h2> <form> <fieldset> <label for="fname">First Name:</label> <input name="fname" id="fname" class="formfield" type="text"> <span id="errfname" class="error">*This is required</span> <span id="errfname1" class="error">*Name fields must have more than one character, and do not contain numbers or other non-allowed alphabetic characters. The only character the last name field should legitimately contain is a hyphen (e.g. Whittaker-Jones).</span> <span id="errfname2" class="error">*This can only contain alphabetic numbers and if desired, one hyphen</span> <br> <label for="sname">Surname:</label> <input name="sname" id="sname" class="formfield" type="text"> <span id="errsname" class="error">*This is required</span> <span id="errsname1" class="error">*Name fields must have more than one character, and do not contain numbers or other non-allowed alphabetic characters. The only character the last name field should legitimately contain is a hyphen (e.g. Whittaker-Jones).</span> <span id="errsname2" class="error">*This can only contain alphabetic numbers and if desired, one hyphen</span> <br> <label for="title">Title: </label> <select name="title" id="title"> <option value="Please select">Please select</option> <option value="Mr.">Mr.</option> <option value="Ms.">Ms.</option> <option value="Mrs.">Mrs.</option> <option value="Miss.">Miss.</option> <option value="Master.">Master.</option> </select> <span id="errtitle" class="error">*This is required</span> <br> <br> <br> <label for="HANo">Health Authority Number:</label> <input name="HANo" id="HANo" class="formfield"type="text"> <span id="errHANo" class="error">*This is required</span> <span id="errHANo2" class="error">*This must be in format ZHA123456 (ZHA followed by 6 numbers)</span> <br> <br> <label for="email">Email:</label> <input name="email" id="email" class="formfield"type="text"> <span id="erremail" class="error">*This is required</span> <span id="erremail2" class="error">*Please enter a valid email</span> <br> <br> <br> <label for="telno">Telephone Number:</label> <input name="telno" id="telno" class="formfield" type="text"> <span id="errtelno" class="error">* If a telephone number is entered, then it should contain only numbers, not letters, or other disallowed characters. A valid Zedland telephone number has 11 digits (no spaces)</span> <span id="errtelno1" class="error">*This must just be numbers</span> <br> <button onclick="checkForm()">Submit</button> </fieldset> </form> </body> </html>

javascript

function checkForm(){ var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; } if (document.getElementById("fname").value == "" ) { document.getElementById("errfname").style.display = "inline"; document.getElementById("errfname").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("fname").value.length < 2 ) { document.getElementById("errfname1").style.display = "inline"; document.getElementById("errfname1").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("fname").value.length > 1) { checkFName(); e.preventDefault(); } if (document.getElementById("sname").value == "" ) { document.getElementById("errsname").style.display = "inline"; document.getElementById("errsname").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("sname").value.length < 2 ) { document.getElementById("errsname1").style.display = "inline"; document.getElementById("errsname1").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("sname").value.length > 1) { checkSName(); e.preventDefault(); } if (document.getElementById("title").value == "Please select" ) { document.getElementById("errtitle").style.display = "inline"; document.getElementById("errtitle").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("HANo").value == "" ) { document.getElementById("errHANo").style.display = "inline"; document.getElementById("errHANo").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("HANo").value.length > 0) { if (checkHANo()); e.preventDefault(); } if (document.getElementById("email").value == "" ) { document.getElementById("erremail").style.display = "inline"; document.getElementById("erremail").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("email").value.length > 0 ) { if(checkEmail()); e.preventDefault(); } if (document.getElementById("telno").value.length != 11 ) { document.getElementById("errtelno").style.display = "inline"; document.getElementById("errtelno").style.visibility = "visible"; e.preventDefault(); } if (document.getElementById("telno").value == /^\d+$/ ) { document.getElementById("errtelno1").style.display = "inline"; document.getElementById("errtelno1").style.visibility = "visible"; e.preventDefault(); } } function checkEmail(){ var email = document.getElementById('email'); var emailRegEx = /[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}/; if (!emailRegEx.test(email.value)) { document.getElementById("erremail2").style.display="inline"; document.getElementById("erremail2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkHANo(){ var HANo = document.getElementById("HANo"); var hanoRegEx = /[ZHA]\d{6}/; if (!hanoRegEx.test(HANo.value)) { document.getElementById("errHANo2").style.display = "inline"; document.getElementById("errHANo2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkFName(){ var first = document.getElementById("fname"); var firstRegEx = /^[a-zA-Z-]{2,40}$/; if (!firstRegEx.test(first.value)){ document.getElementById("errfname2").style.display = "inline"; document.getElementById("errfname2").style.visibility = "visible"; return true; } e.preventDefault(); } function checkSName(){ var sec = document.getElementById("sname"); var secRegEx = /^[a-zA-Z-]{2,40}$/; if (!secRegEx.test(sec.value)){ document.getElementById("errsname2").style.display = "inline"; document.getElementById("errsname2").style.visibility = "visible"; return true; } e.preventDefault(); }

最满意答案

默认情况下会显示您的错误消息。 要隐藏那些,请在下面添加CSS类:

.error{ display:none; }

在checkForm()的开头添加这段代码,以便在纠正错误时重新隐藏消息。 例如:

var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; }

不要在按钮的onclick上调用formCheck()函数,而是在带有return的表单的提交上调用它。 喜欢

<form method="post" action="yourpage" onsubmit="return checkForm()">

要显示所有错误, var isValid=true;默认值为true的变量声明为true如var isValid=true; 就在for loop上方/下方Eg:

function checkForm(){ var isValid = true; var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; } if (document.getElementById("fname").value == "" ) { document.getElementById("errfname").style.display = "inline"; document.getElementById("errfname").style.visibility = "visible"; isValid = false; } if (document.getElementById("fname").value.length < 2 ) { document.getElementById("errfname1").style.display = "inline"; document.getElementById("errfname1").style.visibility = "visible"; isValid = false; } if (document.getElementById("fname").value.length > 1) { isValid = checkFName(); } if (document.getElementById("sname").value == "" ) { document.getElementById("errsname").style.display = "inline"; document.getElementById("errsname").style.visibility = "visible"; isValid = false; } if (document.getElementById("sname").value.length < 2 ) { document.getElementById("errsname1").style.display = "inline"; document.getElementById("errsname1").style.visibility = "visible"; isValid = false; } if (document.getElementById("sname").value.length > 1) { isValid = checkSName(); } if (document.getElementById("title").value == "Please select" ) { document.getElementById("errtitle").style.display = "inline"; document.getElementById("errtitle").style.visibility = "visible"; isValid = false; } if (document.getElementById("HANo").value == "" ) { document.getElementById("errHANo").style.display = "inline"; document.getElementById("errHANo").style.visibility = "visible"; isValid = false; } if (document.getElementById("HANo").value.length > 0) { isValid = checkHANo(); } if (document.getElementById("email").value == "" ) { document.getElementById("erremail").style.display = "inline"; document.getElementById("erremail").style.visibility = "visible"; isValid = false; } if (document.getElementById("email").value.length > 0 ) { if(checkEmail()); isValid = false; } if (document.getElementById("telno").value.length != 11 ) { document.getElementById("errtelno").style.display = "inline"; document.getElementById("errtelno").style.visibility = "visible"; isValid = false; } if (document.getElementById("telno").value == /^\d+$/ ) { document.getElementById("errtelno1").style.display = "inline"; document.getElementById("errtelno1").style.visibility = "visible"; isValid = false; } return isValid; }

注意:如果出现false ,您还必须从checkEmail() , checkHANo()等其他函数返回false 。 看来你回来的只是true 。 并删除所有e.preventDefault()

而已

Your error messages are displaying by default. To hide those add the CSS class below:

.error{ display:none; }

Add this piece of code at the beginning of checkForm() to re-hide the message when error is corrected. Eg:

var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; }

Instead of calling the formCheck() function on onclick of the button, call it onsubmit of the form with a return. Like

<form method="post" action="yourpage" onsubmit="return checkForm()">

To show all errors, declare a variable with default value as true like var isValid=true; just above/below the for loop Eg:

function checkForm(){ var isValid = true; var errors=document.getElementsByClassName('error'); for(var i=0;i<errors.length;i++){ errors[i].style.display='none'; } if (document.getElementById("fname").value == "" ) { document.getElementById("errfname").style.display = "inline"; document.getElementById("errfname").style.visibility = "visible"; isValid = false; } if (document.getElementById("fname").value.length < 2 ) { document.getElementById("errfname1").style.display = "inline"; document.getElementById("errfname1").style.visibility = "visible"; isValid = false; } if (document.getElementById("fname").value.length > 1) { isValid = checkFName(); } if (document.getElementById("sname").value == "" ) { document.getElementById("errsname").style.display = "inline"; document.getElementById("errsname").style.visibility = "visible"; isValid = false; } if (document.getElementById("sname").value.length < 2 ) { document.getElementById("errsname1").style.display = "inline"; document.getElementById("errsname1").style.visibility = "visible"; isValid = false; } if (document.getElementById("sname").value.length > 1) { isValid = checkSName(); } if (document.getElementById("title").value == "Please select" ) { document.getElementById("errtitle").style.display = "inline"; document.getElementById("errtitle").style.visibility = "visible"; isValid = false; } if (document.getElementById("HANo").value == "" ) { document.getElementById("errHANo").style.display = "inline"; document.getElementById("errHANo").style.visibility = "visible"; isValid = false; } if (document.getElementById("HANo").value.length > 0) { isValid = checkHANo(); } if (document.getElementById("email").value == "" ) { document.getElementById("erremail").style.display = "inline"; document.getElementById("erremail").style.visibility = "visible"; isValid = false; } if (document.getElementById("email").value.length > 0 ) { if(checkEmail()); isValid = false; } if (document.getElementById("telno").value.length != 11 ) { document.getElementById("errtelno").style.display = "inline"; document.getElementById("errtelno").style.visibility = "visible"; isValid = false; } if (document.getElementById("telno").value == /^\d+$/ ) { document.getElementById("errtelno1").style.display = "inline"; document.getElementById("errtelno1").style.visibility = "visible"; isValid = false; } return isValid; }

NOTE: You have to return false from other functions such as checkEmail(),checkHANo() also if there is error. It seems you are returning only true. And remove all e.preventDefault()

That's it

更多推荐

本文发布于:2023-07-27 05:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1285442.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表单   错误   如何在   信息   errors

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!