2016-08-13 86 views
1

我有一个包含href属性的元素。点击它会删除数据,所以我希望用户确认该操作。 href属性指的是一个具有将在GET参数中删除的数据的id的php文件。我已经添加了一个onclick属性,应该执行下面这段JS的(它表明要求确认语义UI模式):使用onclick上的<a>元素

confirmmodal = function() { 
    beforeunload = function() { 
     $('.ui.basic.modal') 
      .modal({ 
       closable: false, 
       onDeny: function() { 
        return false; 
       }, 
       onApprove: function() { 
        return true; 
       } 
      }) 
      .modal('show') 
     ; 
} 
} 

但是当我运行这一点,还是到会删除该页面数据(虽然我还没有建立它,所以没有任何被删除)。会不会有一个选项让onclick属性优先于href属性?

+1

你使用什么样的模式,什么jQuery插件,什么html代码后面?你如何称呼模态?请提供所有必需的代码。 – skobaljic

+1

[如何使用jQuery阻止默认链接点击行为]的可能重复(http://stackoverflow.com/questions/5632031/how-to-stop-default-link-click-behavior-with-jquery)。而且你需要在回调之外这样做,所以使用防止默认值。 –

+0

为什么你不能有链接点的href并触发模式窗口,并且确认模式包含指向其他页面的链接或触发对该页面执行AJAX调用的函数?如果页面中的删除链接不能导致删除操作,并且可以在不触发删除的情况下关闭模式 - 或者如果命中“确认”,则允许删除操作发生。 – gavgrif

回答

1

您需要在代码的末尾添加event.preventDefault()

如:

<a href="somePage.php" onclick="showDialog(event)">Delete</a> 



function showDialog(e) { 
    // custom code to show dialog here 
    e.preventDefault(); 
} 
0

好吧,我对剧本了一些调整到了那里,考虑到gavgrif的评论也是如此。

我做了<a>元素有一点不同,所以不会再包含一个href属性:现在

<a title="Delete post" onclick="confirmmodal(this)" data-postid="'. $row['postnr'] .'"><i class="large delete middle aligned icon"></i></a> 

,如果单击该图标,是帖子ID可用于JS一样,所以我们可以只指的是在GET参数被点击了确认按钮时:

confirmmodal = function (a) { 
    $('.ui.basic.modal') 
     .modal({ 
      closable: false, 
      onDeny: function() { 
       return true; 
      }, 
      onApprove: function() { 
       window.location.href = "deletepost.php?id=" + a.dataset.postid 
       return true; 
      } 
     }) 
     .modal('show') 
    ; 
} 

这是一个半丑陋的修复,但它不是有更多的线路,我不可晓得***关于JQuery :)

感谢所有的帮助,我几乎到了preventDefault(),但如果行动得到证实,我无法继续,所以这是一个更简单的解决方案。

相关问题