javascript重定向确实可以正常工作

时间:2012-06-05 03:59:06

标签: javascript redirect

我有一个链接,当用户点击它时会显示一个确认框。如果用户单击“是”,则会将其引导至指定页面,否则将保留在同一页面上。这是我的链接和我的功能代码:

<script type='text/javascript'>
   function checkDelete(){
      var i = confirm("Are you sure you want to delete?");
      if(i){
         return true;
      }else{
         return false;
      }
   }
</script>
<a href="operation.php?action=delete&id=<?php echo $id?>" onclick='checkDelete'>Delete</a>

问题是,即使我点击“否”或取消按钮,它也不会停留在同一页面上。它总是重定向到页面operation.php。但是如果我在onclick上编写内联javascript代码,那么它工作正常。

4 个答案:

答案 0 :(得分:1)

你遇到了一些问题:

JavaScript代码checkDelete只引用变量checkDelete;它什么都没做。您可能打算调用它,并进一步返回调用它的结果:

// in onclick
return checkDelete();

ifreturn语句一起使用是多余的。只需返回confirm的结果:

function checkDelete() {
    return confirm('...');
}

此时,您甚至可以内联它:

// in onclick
return confirm('...');

通常不赞成使用内联JavaScript。最好从JavaScript绑定事件处理程序。例如,如果您的链接ID为delete_link,则可以使用:

// should only be run when delete_link exists
// (e.g. in a DOM ready handler or a script after delete_link)
// this code does not accommodate for older versions of Internet Explorer
document.getElementById('delete_link').addEventListener('click', function(e) {
    if(!confirm('...')) {
        e.preventDefault();
    }
}, false);

答案 1 :(得分:1)

试试onclick="return checkDelete();"。当您尝试使用JavaScript时,使用适当的JavaScript表达式会有所帮助;)

同时,尝试将checkDelete更改为:

function checkDelete() {return confirm("Are you sure you want to delete?");}

答案 2 :(得分:1)

尝试:

<a href="operation.php?action=delete&id=<?php echo $id?>" onclick='return checkDelete();'>Delete</a>

<script type='text/javascript'>
   function checkDelete(){
      var i = confirm("Are you sure you want to delete?");
      if(i){
         return true;
      }else{
         return false;
      }
   }
</script>

答案 3 :(得分:1)

<a href=''>标记始终重定向到目标。返回false和取消操作的概念仅适用于您提交表单时。