1

我让jQuery BlockUI 插件在每个表单提交操作上被触发:

$("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 回答