0
<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>

测试时,我进入请提及密码,在我输入并按 OK 后,它会提交我的表单,而不是制作 $.post 并且仅在 data == '1' 时提交我的表单(返回 true)

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

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

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

4

3 回答 3

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()". 我认为这应该有效。

于 2012-05-25T17:52:31.430 回答
0

你的请求的return trueand return falseinside$.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如果有效,我们直接触发表单的提交事件。

于 2012-05-25T18:00:42.510 回答
0

您在提交时的 onclick 方法不起作用,因为无论如何都会提交表单。

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

于 2012-05-25T17:52:23.550 回答