当前位置: 首页 > 知识库问答 >
问题:

Foreach行jQuery对话框

堵德曜
2023-03-14

我正在建立一个div,它是网站主页的一部分。此div显示项目列表。所有项目都保存在MySQL数据库中。我想做的是在每一行旁边创建一个按钮,上面写着“删除”。单击delete之后,应该会出现一个jQueryUI对话框提示用户进行确认。当确认删除项目时,必须将项目id发送到删除页面(我们称之为delete.php)。

到目前为止我做了什么

  • 从MySQL获取项目列表,并将每个项目显示为一行
  • 在每行末尾添加了删除按钮
  • 单击删除按钮时,将显示对话框,要求确认
  • 当用户确认删除项目时,他将被发送到删除页面

这就是我被困的地方。在删除页上,我回响项目id,看看它是否工作。不知何故,delete.php页面总是呼应第一个项目的id。这意味着jQuery总是发送第一个项目的id。

我怎样才能解开这个谜?

$currents    =   new Project();
$currents    =   $currents->getProjects($_SESSION["user"], "finished");
echo "<table>";
foreach($currents as $current){
 echo "<tr><td>" . $current["name"] . "</td>
 <td><form method='post' class='deleteproject' action='/requests/request.php'/>
 <input type='hidden' name='projectid' value='" . $current['id'] . "' />
 <input type='button' value='Delete' class='deleteproject'></form></td></tr>";

}
echo "</table>";

这里是jQuery;

<script>
  $(function()
  {
      $( ".deleteproject" ).click(function() {
          $( "#dialogbox" ).attr('title', 'Are you sure you want to delete this project?').dialog({
              height: 100,
              width: 350,
              modal: true,
              buttons : {
                  "Confirm" : function() {
                      $('.deleteproject').submit();
                  },
                  "Cancel" : function() {
                      $(this).dialog("close");
                  }
              }
          });
          return false;
      });
  });
  </script>

共有1个答案

寇坚成
2023-03-14

执行$('.deleteproject')时。提交() ,您总是发送第一个。删除项目,而不是单击的项目。要解决这个问题,您可以保存引用并提交您的父表单。

$( ".deleteproject" ).click(function() {
  $this = $(this);
  $( "#dialogbox" ).attr('title', 'Are you sure you want to delete this project?').dialog({
      height: 100,
      width: 350,
      modal: true,
      buttons : {
          "Confirm" : function() {
              $this.closest('form').submit();
          },
          "Cancel" : function() {
              $(this).dialog("close");
          }
      }
  });

附带说明:您的表单类名也是. deleteproject,所以即使您不单击按钮,但在表单上,您的函数也会启动。另外,(对此不确定)我认为你的脚本会因为事件冒泡而两次着火。单击按钮deleteproject也是单击表单deleteproject

 类似资料:
  • 问题内容: 我正在寻找适用于asp.net的JavaScript模态对话框解决方案,jquery UI对话框似乎不错,但是它将对话框容器移至body标签的底部。我将对话框代码更改为将对话框保持为asp.net形式,但仍然超出了updatepanel的范围。 有没有解决方案或更兼容的对话框,它不会破坏asp.net表单的生命周期? 谢谢 问题答案: 为什么不将UpdatePanel放在对话框容器中?

  • 在一个交互覆盖层中打开内容。 如需了解更多有关 dialog 部件的细节,请查看 API 文档 对话框部件(Dialog Widget)。 默认功能 基本的对话框窗口是一个定位于视区中的覆盖层,同时通过一个 iframe 与页面内容分隔开(就像 select 元素)。它由一个标题栏和一个内容区域组成,且可以移动,调整尺寸,默认可通过 'x' 图标关闭。 <!doctype html> <html

  • pre { white-space: pre-wrap; } 对话框(Dialog)是一个特殊的窗口(window),可以包含在顶部的工具栏和在底部的按钮。默认情况下,对话框(Dialog)不能改变大小,但是用户可以设置 resizable 属性为 true,使其可以改变大小。 创建对话框(Dialog) 对话框(Dialog)非常简单,可以从 DIV 标记创建,如下所示:     <div i

  • 问题内容: 单击图像时,我必须创建一个对话框。问题是我在那里有一些很大的z索引(例如500),而ui对话框位于该元素的背面。 这是您需要登录的页面,用户:“ raducup”并通过:“ 1”。另一个问题是,当我单击关闭对话框时,该对象消失了。 这是单击图像时调用的函数: 问题答案: 您没有告诉它,但是您正在使用jQuery UI 1.10。 在jQuery UI 1.10中,该选项已删除: 删除了

  • 问题内容: 我正在寻找一种样式对话框(使用UI对话框),该样式对话框具有与传统对话框不同的独特CSS,因此从本质上讲,它具有两个外观各异的jQuery对话框。 例如,我已经设置了样式 还有一个 不幸的是,我注意到使用单独的CSS来设置对话框各部分的样式,例如 不起作用,因为没有该类,并且我也不能不插入插件而这样做。 另一种选择是使一个元素具有唯一的类/ id(取决于我想要的类/ id),但是这将阻

  • 我有一个基本的SpringBoot应用程序。使用Spring初始化器、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包。我想在一个页面中使用一个JQuery对话框作为确认对话框(提示用户确认他们确定要删除一条记录),在这个页面中我已经有了一个可数据;但是当我把两者结合在一起时,似乎什么都不起作用。 当我点击按钮时: