jquery提交不起作用

时间:2011-08-11 01:09:11

标签: jquery submit

我无法正确提交此表单。如果我将按钮类型设置为“submit”它总是提交,如果我使用“button”作为它从不提交的类型,则ajax调用会带来正确的值,因此即使if语句遵循正确的路径但它似乎并不重要。

<script type="text/javascript">
$(document).ready(function(){
 $("#submitButton").click(function(e) {
        var un  = $('#username').val();
        $('#mike').html("");       
            $.ajax(
            {              
                type: "POST",
                url: "Utilities/CheckUsername.php",
                data: "un="+ un,
                success: function(data2)
                {                  
                   if(data2=="Username Does Not Exist")
                    {         
                       $("#login2").submit();                   
                    }
                    else
                    {
                        $('#mike').html(data2);
                        return false;                      
                    }                   
                }

            });
             });

             }); 
             </script>
</head>
<body>
      <form name="login" id="login2" method="post" action="dsds.html">
        UserName<input type="text" name="username" id="username"value="">
        <br/>
        Password<input type="text" name="password" id="password" value="">
        <br/>
        Password Again<input type="text" name="passwordagain" id="passwordagain" value="">
        <br/>
        <input type="hidden" name="NewClass" id="NewClass" value="true">
        <br/>
        <input type="submit" name="no" id="submitButton" value="submit">
     </form>
     <span id = "mike"></span>
</body>
</html>

编辑: 我在这里添加了返回false并且它有效,但为什么呢?我只是从点击事件

返回false
else
            {
                $('#mike').html(data2);

            }                   
        }

    });
     return false;
     });

2 个答案:

答案 0 :(得分:3)

您只需要提交事件处理程序中的return false即可。在异步ajax调用结束后 后,您所拥有的return false才会执行。

或者你可以使用e.preventDefault()做同样的事情。

这两种方法都只是防止出现默认行为,即提交表单。

答案 1 :(得分:2)

我建议您将事件处理程序绑定到表单的submit事件:

$('#login2').submit(function(event) {
    event.preventDefault();
    //...
});

您必须阻止提交表单的事件的默认操作。这是通过event.preventDefault [docs]完成的。 Ajax回调中的return false将无效,因为事件处理程序在收到响应之前返回

如果你这样做,你必须设置某种标志,以查看你所处的过程状态:

var nameAvailable = false;

$('#login2').submit(function(event) {
    if(!nameAvailable) {
        event.preventDefault(); // don't submit form
        //...
        $.ajax({
            success: function() {
                // if name available
                nameAvailable = true;
                $('#login2').submit();
            }
        });
     }
});