简体   繁体   English

我怎样才能重新输入我的输入字段并且我的表单不提交?

[英]How can i make to reenter my input fields and that my form do not submits?

I have a form which shows an alert with a message when the two password input fields do not match but if they do match it shows a confirmation message before creating the user.我有一个表单,当两个密码输入字段不匹配时,它会显示一条带有消息的警报,但如果它们匹配,它会在创建用户之前显示一条确认消息。 The issue im having is that even if my confirmation function returns false which means that in the confirm message i selected cancel, my form is being submitted again.我遇到的问题是,即使我的确认功能返回 false,这意味着在确认消息中我选择了取消,我的表单正在再次提交。

 <script> function confirmarAlta(){ var result = confirm("Esta seguro que desea crear este usuario?"); if(result == false){ event.preventDefault(); } } </script> <script> function verificarPassword(){ var pass = document.querySelector(".password").value; var confirmPass = document.querySelector(".confirmPassword").value; console.log(pass); console.log(confirmPass) if(pass != confirmPass){ pass = ""; confirmPass = ""; alert("Las contraseñas no coinciden"); return } } </script> <script> function Validaciones(event) { if (verificarPassword() === true) { confirmarAlta(); if(confirmarAlta()==false){ event.preventDefault(); } } else { event.preventDefault(); } } </script>
 <form onSubmit="Validaciones(event)" method="post" action="ServletUsuarios"> <div class="form-group"> <label>Contraseña: </label> <input type="password" class="form-control password" name="txtPassword" required> </div> <div class="form-group"> <label>Repetir Contraseña: </label> <input type="password" class="form-control confirmPassword" name="txtConfirmarPassword" required> </div> <div class="col-12"> <input type="submit" class="btn btn-success" value="Aceptar" name="btnAceptar"> <button type="submit" class="btn btn-outline-info">Limpiar campos</button> </div> </form>

So I am guessing you wrapped the html provided inside a form, which is causing the submission, since input is of type submit , I removed that and moved it to the onSubmit event and called the event.preventDefault() which will stop the fault form action, only when the validation alert opens!所以我猜你将提供的 html 包装在一个表单中,这会导致提交,因为 input 的类型是submit ,我将其删除并将其移至onSubmit事件并调用event.preventDefault()这将停止错误表单操作,仅当验证警报打开时!

 function confirmarAlta(event) { var result = confirm("Esta seguro que desea crear este usuario?"); if (result === false) { event.preventDefault(); } } function verificarPassword() { var pass = document.querySelector(".password").value; var confirmPass = document.querySelector(".confirmPassword").value; console.log(pass); console.log(confirmPass) if (pass != confirmPass) { pass = ""; confirmPass = ""; alert("Las contraseñas no coinciden"); return false } return true; } function Validaciones(event) { if (verificarPassword() === true) { confirmarAlta(event); } else { event.preventDefault(); } }
 <form onSubmit="Validaciones(event)"> <div class="form-group"> <label>Contraseña: </label> <input type="password" class="form-control password" name="txtPassword" required> </div> <div class="form-group"> <label>Repetir Contraseña: </label> <input type="password" class="form-control confirmPassword" name="txtConfirmarPassword" required> </div> <div class="col-12"> <input type="submit" class="btn btn-success" value="Aceptar" name="btnAceptar"> <button type="submit" class="btn btn-outline-info">Limpiar campos</button> </div> </form>

Try using a match function or contains function to identify if your pass and confirmPass return true or false.尝试使用 match 函数或 contains 函数来确定您的 pass 和 confirmPass 返回 true 还是 false。 Also convert this to toUpper case or toLower case before comparison.在比较之前,还要将其转换为 toUpper case 或 toLower case。 I guess it is returning true always under pass != confirmpass.我猜它总是在 pass 下返回 true != confirmpass。 Also, please share what is inside pass and confirmpass before if condition.另外,请在if条件之前分享一下pass和confirmpass里面的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM