【问题标题】:Javascript delete validation whether "Ok" or "Cancel"Javascript删除验证是否“确定”或“取消”
【发布时间】:2013-08-01 19:12:43
【问题描述】:

大家好,我目前正在开发 javascript 中的删除验证功能。这是我的代码。

  function confirmDelete(){
var agree = confirm("Are you sure you want to delete this file?");
  if(agree == true){
    return true
}
else{
return false;
}
}

弹出警告对话框,但每当我按下“取消”按钮时,它仍然会删除表中的文件

这是我的 HTML:

<a href=".base_url()."main/delete?id=$row->id>"."<i class='icon-trash' rel = 'tooltip' title = 'Delete' id = 'delete' onClick = 'confirmDelete();'></i></a>";

顺便说一下,我正在使用 CodeIgniter,任何帮助都将不胜感激!多谢你们! :)

【问题讨论】:

  • 为什么不使用base_url('main/delete?id='.$row-&gt;id) 而不是串联?

标签: javascript codeigniter


【解决方案1】:

尝试在调用 javascript 函数的地方使用 return 语句。 如下:

<a href=".base_url()."main/delete?id=$row->id>"."<i class='icon-trash' rel = 'tooltip'   title = 'Delete' id = 'delete' onClick = 'return confirmDelete();'></i></a>";

【讨论】:

    【解决方案2】:

    直接在你的标签里面做:

       <a href=".base_url()."main/delete?id=$row->id>"  OnClick="return confirm('Are you sure you want to delete this book?');"> Delete </a>
    

    【讨论】:

      【解决方案3】:

      因为点击应该在&lt;a&gt;,而不是&lt;i&gt;。此外,考虑到confirm 返回truefalse,您的函数可以简化:

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

      【讨论】:

      • 还是一样:(
      • 你能从原始代码中显示整个 PHP 行吗?还是只是 HTML 输出?您在两者之间发布了一些内容,很难阅读。
      • 公共函数 delete(){ $id = $this->input->get('id'); $delete_row = array("id" => "$id"); $this->load->model('user_model'); $this->user_model->delete_user($delete_row); $this->view_emp();这是我的控制器中的删除功能,你认为我可以将验证放在我的控制器中吗?
      • @thisshit 不,我的意思是您在问题中发布的内容,但完整,带有回声,外部引号等。您的引号看起来很可疑。
      • @thisshit 没关系,JSHunjan 是对的,我错过了。不过,关于简化函数的提示仍然存在。
      【解决方案4】:

      调用event.preventDefault(),如果它自己返回 false 不会阻止浏览器操作。

      您需要获得对事件或window.event.. 的引用,这在某种程度上是特定于浏览器的。 jQuery 或类似的可以帮助解决这个问题。

      onclick="if (! confirm('Are you sure you want to delete this book?')) event.preventDefault();"
      

      (不过,在上面的例子中,我们不再返回“false”——理想情况下,我们将代码放在一个方法中,并且两者都返回 false 并且阻止默认 if确认是否定的。)

      要测试它是否有效,最简单的方法是:

      onclick="event.preventDefault();"
      

      另见:

      返回 'false' 和 e.preventDefault() will prevent the default event from occuring,e.stopPropagation()` 之间的区别防止它冒泡/向外和外部默认值发生,但返回 'false' 并不能阻止它冒泡。

      所以也许将onclick 处理程序放在执行默认操作的链接上会更好?

      【讨论】:

      • 非常感谢您的帮助 :)
      猜你喜欢
      • 2020-03-18
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多