2013年4月11日 星期四

如何防止表單被多次 submit (for asp.net MVC form with validation)

MVC架構幫了我們做很多工作,
但是在client方面,真的還是要自己多下點工夫比較好
如果使用者故意用北斗百裂拳做一個表單多次提交(click submit button ) 的動作
會有意想不到的結果
(不過,如果是server效能差或是需要大量運算才能回應時,這真的不能怪user手賤,像我耐性就很差了,會到處亂點的)
這時,要用以下的方式:
請在你表單的script section做以下的調整(真的,加入就可以了,不用改,因為這是非入侵性的寫法)
========================================
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
<script>
    $(document).on('invalid-form.validate', 'form', function () {
        var button = $(this).find('input[type="submit"]');
        setTimeout(function () {
            button.removeAttr('disabled');
        }, 1);
    });
    $(document).on('submit', 'form', function () {
        var button = $(this).find('input[type="submit"]');
        setTimeout(function () {
            button.attr('disabled', 'disabled');
        }, 0);
    });</script>
}
============================================
這時,就算是表單驗證不成,submit button還是會恢復可用狀態
很好用的
這是我在這裡所找到的解決方法,提供給需要的朋友參考


沒有留言:

張貼留言