为什么我的表格即使在密码匹配后也没有提交

why my form is not being submitted even after the passwords match.?

本文关键字:提交 密码 表格 我的 为什么      更新时间:2023-09-26

这是我的一段脚本,表单id="details"

<script type="text/javascript">
function onLoad() {
    $("#password").keyup(passCheck);
    $("#repeatpass").keyup(passCheck);
}
function passCheck() {
    var password = $("#password").val();
    var repeatpass = $("#repeatpass").val();
    if (password == repeatpass) {
        $("#matchpass").text("Passwords match");
        $("#matchpass").addClass("valid");
        $("#matchpass").removeClass("error");
        $("#details").submit(true);
    } else {
        $("#matchpass").text("Passwords donot match");
        $("#matchpass").addClass("error");
        $("#matchpass").removeClass("valid");
        $("#details").submit(false);
    }
}
$(document).ready(onLoad);
</script>

我想知道为什么我的表格(id="details")没有提交,如果有人能解释这个结构是如何工作的,它将对我更有帮助。谢谢

工作小提琴

使用$("#details").submit()而不是$("#details").submit(true);,并删除$("#details").submit(false);

希望这能有所帮助。

您不应该在submit函数中传递参数删除$("#details").submit(true);$("#details").submit(false);它不在jquery API中。编写这段代码会更好地使用:

$( "form" ).submit(function(event) {
  if ( $( "span" ).hasClass('error')) {
   alert('prevented');
   event.preventDefault();
 }
 return;
});

Fiddle Link

对于初学者,您不需要在else块中有.submit调用。

此代码分为三个步骤:

(1) .ready命令告诉jQuery,当页面准备好时,它应该执行名为onLoad的函数。

(2) onLoad函数告诉当按下键盘上的键时,应调用passCheck函数。

(3) passCheck函数检查两个文本是否相等,如果相等,则提交表单,否则不提交(即根本不应调用.submit)。

可能这两个密码最初都是空的,所以它们是相等的,并且尝试了.submit,但上的一个错误阻止了脚本停止工作。之后,脚本将完全停止工作。

上面提到的关于HTML代码请求的注释和关于.submit的参数的注释都是正确的。