1

すべてのフォーム送信アクションでトリガーされるようにjQueryBlockUIプラグインを作成しました。

$("form").submit(function() {
    jQuery.blockUI();
});

送信する前に、いくつかのフォームを検証したいと思います。

<form method="POST" onSubmit="return(confirm('Really submit?'));">

確認ポップアップボックスで[キャンセル]をクリックすると、BlockUIがトリガーされ、インターフェイスがブロックされます。ブロックが解除されることはありません。
次に例を示します:http://jsfiddle.net/8B8yA/

問題は、「キャンセル」が押されたときにBlockUIがトリガーされないようにする方法です。

$.unblockUI()「キャンセル」アクションに追加してみました:

if(!confirm("Really submit?")) {
    $.unblockUI();
    return(false);
}

ただし、ブロックアクションが呼び出される前にブロック解除アクションが呼び出されるため、明らかに機能しません。

4

2 に答える 2

2

どうですか:

$("form").submit(function() {
    if(!$(this).hasClass('skip'))
    jQuery.blockUI();
});​

<html>
  <head>
    <script src="http://malsup.github.com/jquery.blockUI.js">
    </script>
  </head>
  <body>
    <form method="POST" onSubmit="return (function(form) { var c = confirm('Are you sure?'); if(!c) { $(form).addClass('skip'); } return c; })(this);">
      <input type="submit">
    </form>
  </body>
<html>​

参照: http: //jsfiddle.net/8B8yA/5/

于 2012-05-25T12:03:44.940 に答える
2

フォームからonsubmitを削除して、次の手順を実行してみてください。

$("form").submit(function() {
    if(confirm('Really submit?')) {
        jQuery.blockUI();
    }
    else {
        return;
    }
});

あなたはこのようなことを意味しましたか:: jsFiddle

次のように、ブロックUIが必要なフォームにIDを追加できます。

$("#yourFormId").submit(function() {
        if(confirm('Really submit?')) {
            jQuery.blockUI();
        }
        else {
            return;
        }
    });
于 2012-05-25T11:53:45.923 に答える