【问题标题】:Preventing data-ajax attributes from executing防止执行 data-ajax 属性
【发布时间】:2013-09-27 10:02:21
【问题描述】:

我有这个链接(也是fiddle):

<a class="update noClick" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#vote11" href="/Tutors/RateNegative/11" onclick="return window.confirm('Are you sure?');">qwer</a>

现在我想要它做的是,在用户点击它之后,我希望它显示确认窗口(它会这样做),但我想阻止 ajax 做任何事情,除非用户接受确认窗口。目前,如果用户拒绝此窗口,ajax 无论如何都会发出请求。

我该怎么做?

【问题讨论】:

  • AJAX 代码在哪里? data-ajax 属性不执行任何操作。
  • 如果用户点击“取消” - 操作被取消,没有任何反应
  • @Barmar:他们没有?那为什么这行得通? o.o我是通过asp.net mvc的框架渲染出来的,所以看来肯定有别的东西在执行它...
  • 如果您使用的框架可以自动执行此类操作,您应该在问题中提及它,并添加框架的标签。

标签: javascript html ajax asp.net-mvc


【解决方案1】:

试试这个小提琴:http://jsfiddle.net/YddmF/

我只是将 ajax 移动到一个单独的隐藏锚点,如果用户确认,则使用 javascript 单击它。

HTML

<a href="#" onclick="window.checkUser();">qwer</a>

<a id="ajax-anchor" class="update" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#vote11" href="/Tutors/RateNegative/11"></a>

JS

window.checkUser = function () {
  if (window.confirm('Are you sure?')) {
        document.getElementById("ajax-anchor").click();
    }
}

CSS

#ajax-anchor { display: none; }

【讨论】:

  • 这很聪明,我喜欢它,谢谢。 ;) 但我已经找到了一个不那么老套的解决方案。 ;)
【解决方案2】:

解决方案非常简单。我需要添加data-ajax-begin 属性,而不是使用onclick 属性,并将我的代码放在那里。如果begin 返回 false,则什么也不会发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多