为什么jquery提交可能不起作用?

时间:2011-08-26 08:25:31

标签: jquery post

在我使用<button name="submit" id="register" value="Register">Continue</button>

的简单帖子之前,我有表格

比我决定将该帖子更改为jquery ajax帖子:

<script type="text/javascript">
    $(document).ready(function () {

        $("#register").click(function () {

            if (!$("form").valid())
                return false;

            var isContinue = false;

            $.ajax({
                url: "/Validate",
                type: "POST",
                dataType: "text",
                data: { recaptcha_challenge_field: $("input#recaptcha_challenge_field").val(), recaptcha_response_field: $("input#recaptcha_response_field").val() },
                cache: false,
                success: function (data, textStatus, xhr) {
                    isContinue = data === 'true';
                },
                error: function (xhr, st, err) {
                    alert("Sorry error occured, try again later.");
                },
                complete: function () {
                    alert(isContinue);//i could see that alert
                    if (isContinue) {
                        alert(isContinue); //i could see that alert
                        $("form").submit();
                        alert(isContinue); //i could see that alert
                    }
                    else {

                        return false;
                    }
                }
            });
        });
    });
 </script>
<a class="button" id="register">Continue</a

因此,如果所有验证包括capthca通过,而不是我点击提交按钮和表单时未在服务器上发布。我使用chrome和opera network dev tools检查了请求,并且他们没有显示发布操作,但是根据我在javascript中放置的警告,应该发布表单。

然后,对于测试,我放置了另一个简单的提交按钮和表单,因此出于某种原因$("form").submit();不希望发布表单。

可能有些人可能有任何想法可能是什么?

更新

当我尝试ajax post button时,我正在评论simple post button,但问题是 我有另一个back button :)看起来像这样:

<button name="submit" class="cancel" id="back" value="Back"> 

所以问题实际上是name="submit",我只是将其删除并立即全部工作。

2 个答案:

答案 0 :(得分:2)

这是因为您命名为submit的按钮覆盖了submit元素上的form方法,因此代替form.submit是提交表单的函数,它现在是对button元素的引用。

解决此问题的最简单方法是重命名button元素。

区分$('form').submit()form.submit()非常重要。 $('form').submit)jQuery method,不受名为submit的按钮的影响,但在幕后,jQuery调用实际 {{1}上的submit属性} element, 受名为HTMLForm的按钮

影响

bug about this上有一个http://bugs.jquery.com,但如上所述,jQuery本身并不是实际上的问题。

你的代码有另一个问题;你不应该在你的点击处理程序中使用submit,因为这是在页面上为 alllll 表单构建一个jQuery对象;因此,您要检查 alllll 表单是否有效,并提交 alll 表单。相反,请使用$('form')

答案 1 :(得分:0)

那是有效的功能吗? 它会在提交时返回false。

    if (!$("form").valid())
        return false;