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>

When testing I get to the Please mention pw, after i entered and press OK it submits my form, instead of making the $.post and only submit my form if data == '1' (return true)

claim() is called at my submit button;

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

I tried alert debugging and it was true like i thought it automatically submits when it reads the $.post(), I only wish it to submit (by returning true) if the data is 1.

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

フォームはどちらの方法でも送信されるため、送信のonclickメソッドは機能しません。

たとえばonsubmit();、フォームのイベントにリスナーを設定する必要があります。または、別の解決策としてonsubmit、javascript関数を含む属性を配置し、関数を使用してjavascriptからフォームを送信します$('#form').submit();

于 2012-05-25T17:52:23.550 に答える
0

リクエストの内部return truereturn 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有効な場合は、フォームの送信イベントを直接トリガーします。

于 2012-05-25T18:00:42.510 に答える