使用JQuery禁用按钮

时间:2014-02-18 01:39:19

标签: jquery asp.net-mvc

我正在用这个敲打我的头,看起来很简单,但我似乎无法得到这个。故事说我正在使用NopCommerce,这是一个ASP.Net MVC应用程序,我正在尝试做的是,当用户正在完成结帐过程并且他们在发货页面上,我希望用户点击“继续“按钮但是在点击事件上调用Shipping.Save方法之前,我想打开一个对话框并传递一些信息。然后在对话框中,他们选择是/否,并根据他们选择的选项,如果他们选择是,则更新他们的记录并继续,就像按钮被原始点击一样,否则如果他们点击否则该框将然后,按钮会像最初点击一样进入下一部分。

现在这就是html的样子:

</li>
            <li id="opc-shipping" class="tab-section">
                <div class="step-title">
                    <span class="number">2</span>
                    <h2>Shipping address</h2>
                </div>
                <div id="checkout-step-shipping" class="step a-item" style="display: none;">
                    <form action="" id="co-shipping-form">
                    <div id="checkout-shipping-load">

                    </div>
                    </form>
                    <script type="text/javascript">
                        Shipping.init('#co-shipping-form', 'http://localhost:15536/checkout/OpcSaveShipping/');
                        if ($("#shipping-address-select").length > 0) {
                            Shipping.newAddress(!$('#shipping-address-select').val());
                        }
                    </script>
                    <div class="buttons" id="shipping-buttons-container">
                        <p class="back-link">
                            <a href="#" onclick="Checkout.back(); return false;"><small>&laquo; </small>Back</a></p>
                        <input type="button" class="button-1 new-address-next-step-button" title="Continue" onclick="Shipping.save()" value="Continue" />
                        <span id="shipping-please-wait" class="please-wait" style="display: none;"> Loading next step...</span>
                    </div>
                </div>
            </li>

我尝试了很多不同的东西,但这是我的最后一次尝试:

 $('#shipping-buttons-container').on('click', function() {
    var me = $(this);
    me.offtmp('click'); //disable the click event temporaraly while performing ajax request
    //$.post(...).always(function() {
    //    me.ontmp('click'); //the ajax request is ready, now we can enable clicks again
    //});
});

即使只是试图获取提醒弹出这个也行不通。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您将无法“暂时”禁用点击事件。你需要杀死它。所以,杀了它。但是,请记住9之前的IE版本不能像常规浏览器那样处理。在点击功能的顶部执行以下操作:

if (e.preventDefault) {
    // For modern browsers
    e.preventDefault();
}
else {
    // For older IE browsers
    e.returnValue = false;
}

现在,您可以自由显示消息框/警报以获取用户输入。如果他们说“不”/“取消”,只需关闭该框即可。如果他们接受,则关闭该框并调用脚本将用户发送到下一部分。 (看起来你没有使用表单,但那将是$('#formID').submit();

请务必不要再次回到点击功能。

答案 1 :(得分:0)

尝试这样的事情:

$("#shipping-buttons-container").click(function() {
  var me = $(this);
  me.unbind( "click");            
})