$ posts jquery提交我的表单

时间:2012-05-25 17:46:26

标签: javascript jquery

<script type="text/javascript">
    function claim()
    {
        var c = confirm('You sure?');

        if(c)
        {
            var password=prompt("Please mention pw","");
            if (password!=null && password!="")
              {
                    $.post("/claim/<?php echo $refnr; ?>", { partner_pwd: password },
                       function(data) { 
                            alert(data);
                            if(data == '1')
                            {
                                return true;
                            }else{
                                return false;
                            }
                       });
              }else{
                return false;
              }
        }else{
            return false;
        }
    }
</script>

在测试时,我进入请提及pw,在我输入并按OK之后它提交我的表单,而不是制作$ .post并且只提交我的表格如果数据=='1'(返回true)

在我的提交按钮中调用claim();

<input type="submit" name="submit" onclick="return claim()"; value="Submit" />

我尝试了警报调试,这是真的,就像我认为它在读取$ .post()时自动提交,我只希望它提交(通过返回true),如果数据为1。

3 个答案:

答案 0 :(得分:1)

好吧,如果你把一个表格放在一个网站上,它的目标是提交表格。

http://api.jquery.com/submit/(向下滚动到以Example: If you'd like to prevent forms from being submitted unless a flag variable is set, try:开头的最后一个示例)

如上面的链接所述,您应该更改表单的操作而不是某些页面,并执行action="javascript:claim()"之类的操作。我认为这应该有效。

答案 1 :(得分:0)

您提交的onclick方法无法正常工作,因为无论如何都会提交表单。

例如,您应该在表单上的onsubmit();事件上设置一个侦听器 或其他解决方案是将onsubmit属性与您的javascript函数放在一起,并使用$('#form').submit();函数从您的javascript提交表单。

答案 2 :(得分:0)

return true请求中的return false$.post除了退回该回调外什么都不做。它不会阻止表单提交。相反,请尝试完全阻止提交,然后在需要提交时触发它。

function claim() {
    var c = confirm('You sure?');

    if (!c) {
        return false;
    }

    var password = prompt("Please mention pw", "");
    if (password != null && password != "") {
        $.post("/claim/<?php echo $refnr; ?>", {
            partner_pwd: password
        }, function(data) {
            alert(data);
            if (data == '1') {
                $("#myform").submit();
            }
        });
    }
    return false;
}​

请注意,无论有效性如何,我们总是 return false。如果它有效,我们会直接触发表单的提交事件。