[英]JavaScript form validation not working as intended
早上好,
我正在做一些简单的表单验证。 每当我提交表单时,都会出现错误消息,但是我可以反复向该按钮发送垃圾邮件以获取大量错误消息。 有没有一种方法可以将其更改为仅显示错误消息一次? 我还注意到,即使我同时填充了两个字段,它仍会在控制台中快速闪烁并显示错误日志,但不会显示错误。
谁能告诉我我在做什么错?
var uname = document.forms['signIn']['userame'].value; var pword = document.forms['signIn']['password'].value; function validateMe (e) { if (uname.length || pword.length < 1 || '') { var container = document.getElementById('error-container'); var errorMsg = document.createElement('div'); errorMsg.className = 'error-message'; errorMsg.innerHTML = '<span class="heading-large">Please enter a valid username or password</span>'; container.appendChild(errorMsg); console.log('An error occured'); return false; } }
<form id="signIn" action='#'> <div class="boxed left-floater"> <h1 class="heading-large margin-top">Sign in</h1> <div id="error-container"></div> <div class="form-group"> <label class="form-label-bold" for="username">Username</label> <input class="form-control log-in-form-control" id="username" name="username" type="text"> </div> <div class="form-group"> <label class="form-label-bold" for="password">Password</label> <input class="form-control log-in-form-control" id="password" type="password" name="password"> </div> <div> <a class="right-floater forgotten-password" href="forgottenpassword.html">Forgotten Password</a> <button class="button clear right-floater" type="submit" onclick="validateMe();">Sign In</button> </div> </div> </form>
这是完整的工作代码
var uname = ""; var pword = ""; function validateMe(e) { e.preventDefault(); uname = document.forms['signIn']['username'].value; pword = document.forms['signIn']['password'].value; if (uname.length || pword.length < 1 || '') { var container = document.getElementById('error-container'); var errorMsg = document.createElement('div'); errorMsg.className = 'error-message'; errorMsg.innerHTML = '<span class="heading-large">Please enter a valid username or password</span>'; container.appendChild(errorMsg); console.log('An error occured'); return false; } return true; }
<form id="signIn"> <div class="boxed left-floater"> <h1 class="heading-large margin-top">Sign in</h1> <div id="error-container"></div> <div class="form-group"> <label class="form-label-bold" for="username">Username</label> <input class="form-control log-in-form-control" id="username" name="username" type="text"> </div> <div class="form-group"> <label class="form-label-bold" for="password">Password</label> <input class="form-control log-in-form-control" id="password" type="password" name="password"> </div> <div> <a class="right-floater forgotten-password" href="forgottenpassword.html">Forgotten Password</a> <button class="button clear right-floater" type="submit" onclick="validateMe(event);">Sign In</button> </div> </div> </form>
您必须清除container
的内容以避免重复元素。 以下是几点注意事项:
input type=submit
而不是button
event
传递给您的validateMe function
以防止发布默认操作。 function validateMe(e) { e.preventDefault(); var uname = document.forms['signIn']['username'].value; var pword = document.forms['signIn']['password'].value; var container = document.getElementById('error-container'); container.innerHTML = ''; //Clear the contents instead of repeating it if (uname.length < 1 || pword.length < 1) { var errorMsg = document.createElement('div'); errorMsg.className = 'error-message'; errorMsg.innerHTML = '<span class="heading-large">Please enter a valid username or password</span>'; container.appendChild(errorMsg); console.log('An error occured'); return false; } }
<form id="signIn" action='#'> <div class="boxed left-floater"> <h1 class="heading-large margin-top">Sign in</h1> <div id="error-container"></div> <div class="form-group"> <label class="form-label-bold" for="username">Username</label> <input class="form-control log-in-form-control" id="username" name="username" type="text"> </div> <div class="form-group"> <label class="form-label-bold" for="password">Password</label> <input class="form-control log-in-form-control" id="password" type="password" name="password"> </div> <div> <a class="right-floater forgotten-password" href="forgottenpassword.html">Forgotten Password</a> <input value="Sign In" class="button clear right-floater" type="submit" onclick="validateMe(event);" /> </div> </div> </form>
编辑 - if condition
失败并已相应更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.