在给出返回false后提交表单

时间:2013-12-28 09:33:50

标签: javascript php jquery ajax forms

我想在提交表格后提交表格 我在StackOverflow上看到了一些问题,但没有一个对我有用。

以下是代码:

$(function(){
    $("#loginform").submit(function(){
      var username = $("#user").val();
      $.get( "go.php?action=check_username&username=" + username  )
        .done(function( data ) {
            console.log(data);
            if (data.indexOf("ok") >= 0) {$("#loginform").submit();}
            else {alert("Username doesn't exist");}
      })            
        return false;
    });
});

如果用户名存在,则只是一次又一次地运行ajax,从不提交表单。

提前致谢。

6 个答案:

答案 0 :(得分:5)

你的问题是你已经覆盖了$(“#loginform”)。submit(); - 所以即使你尝试从你的javascript代码提交它,你也会再次回到同一个函数。

而是覆盖按钮单击/返回按下的/ etc事件并对其进行比较,而不是在loginform提交上进行比较。现在,您可以在执行检查后自行提交表单。

我实际上这样做的方法是从禁用提交按钮开始,并在各个字段中为文本更改设置监听器。通过监听该字段中的更改来验证输入的每个字段,如果它们有效,则显示勾号(或其他)。

然后,每个字段有效后启用提交按钮。

答案 1 :(得分:1)

替代解决方案

$(function(){
    var my_submit_allowed = false;
    $("#loginform").submit(function(){
      if (my_submit_allowed) return true;
      var username = $("#user").val();
      $.get( "go.php?action=check_username&username=" + username  )
        .done(function( data ) {
            console.log(data);
            if (data.indexOf("ok") >= 0) {
              my_submit_allowed=true;
              $("#loginform").submit();
            }
            else {alert("Username doesn't exist");}
        })            
        return false;
    });
});

答案 2 :(得分:0)

我认为在这种情况下,jQuery方法 .off()可能会很有用。考虑下面的代码段。这感觉有点hackish,但也很明确和直接:

$('#theForm').submit(function () {
    $.when().then(function () {
        $('#theForm').off('submit').submit();
    });

    return false;
});

此外, .submit()的官方API示例演示了它如何非常灵活 - https://api.jquery.com/submit/

答案 3 :(得分:0)

如果您使用的是jQuery,并且单击要提交表单的按钮,则可以取消绑定并重新绑定提交按钮上的Submit事件

if (true) {
    $('#submitButton').unbind('submit').bind('submit');
} else {
    $('#loginform').on('submit', function(){
        return false;
    })
}

答案 4 :(得分:-3)

$(function(){
    $("#loginform").submit(function(){
      var username = $("#user").val();
      $.get( "go.php?action=check_username&username=" + username  )
        .done(function( data ) {
            console.log(data);
            if (data.indexOf("ok") >= 0) {
              return true;
            }
            else {alert("שגיאה בהתחברות");}
      })            
        return false;
    });
});

答案 5 :(得分:-3)

我对代码进行了一些更改。我已将retval添加为TRUE并在每个状态检查retval是否为FALSE。如果是FALSE,如果应该正常提交,IT将不会提交其他内容。

$(function(){
        $("#loginform").submit(function(){
          var username = $("#user").val();
          var retval = true;
          $.get( "go.php?action=check_username&username=" + username  )
            .done(function( data ) {
                console.log(data);
                if (data.indexOf("ok") >= 0) {
                    $("#loginform").submit();
                    retval = true;
                } else {
                    alert("Username doesn't exist");
                    retval = false;
                }

            /* If retval is EQ is FALSE then stop submit else if should submit as normal */
                if(!retval){
                    return false;
                }
          });          
        });
    });