我正在用这个敲打我的头,看起来很简单,但我似乎无法得到这个。故事说我正在使用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>« </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
//});
});
即使只是试图获取提醒弹出这个也行不通。有什么建议吗?
答案 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");
})