【问题标题】:JQuery confirmation dialog on submit click in PHP在 PHP 中单击提交时的 JQuery 确认对话框
【发布时间】:2016-11-26 11:28:41
【问题描述】:

我编写了一个 php 代码,当我单击提交按钮时,组合框中的某些项目将被删除。现在我想要确认,我在下面写了不起作用的代码。 php代码:

$DeleteButton=$_REQUEST['DeleteButton'];
if ($DeleteButton=="delete") :
   if ($DeleteComboBox=="PickOne") :
       $DeleteButton = "" ;
   else :
       $query = "DELETE FROM `items` WHERE `id` = $DeleteComboBox LIMIT 1";
       $result = mysql_query($query)
           or die("Database deletion failed");
       $DeleteButton = "" ;
   endif ;
endif ;

echo "<BR><BR><FORM NAME=\"EditFORM\" ACTION=\"./index.php\" METHOD=POST>\n";
$sql_select = "SELECT * FROM items WHERE id>0 order by name" ;
$sql_result = mysql_query($sql_select)
or die ("Couldn't execute SQL query on db table.") ;
echo "<SELECT ID=\"DeleteComboBox\" NAME=\"DeleteComboBox\">";
echo "<OPTION VALUE=\"PickOne\" SELECTED>select item</OPTION>";
while ($row = mysql_fetch_array($sql_result))  {
   echo "<OPTION VALUE=\"$row[0]\">" . $row[2] . " " . $row[1] . "</OPTION>";
}
echo "</SELECT>";
echo "<BR><BR><INPUT TYPE=SUBMIT NAME=\"DeleteButton\" VALUE=\"delete\" ID=\"DeleteButton\">\n" ;
echo "</FORM>\n";

jQuery部分:

<script type="text/javascript">
$(document).ready(function() {
    $("#dialog").dialog({
       autoOpen: false,
       modal: true
    });
});

$("#DeleteButton").click(function(e) {
    e.preventDefault();
    currentForm = $(this).closest('form');
    $("#dialog").dialog({
       dialogClass: "no-close",
       buttons : {
          "yes" : function() {
             currentForm.submit();
          },
          "no" : function() {
             $(this).dialog("close");
          }
      }
  });

  $("#dialog").dialog("open");
});
</script>

问题是这段代码不起作用。如果我不添加 jquery 部分,则代码可以正常工作,但是在添加 jquery 部分后,当我单击提交按钮时,会出现 jquery 对话框,但在单击是按钮后,将提交表单而不删除所选项目。

【问题讨论】:

    标签: php jquery jquery-ui form-submit jquery-ui-dialog


    【解决方案1】:

    提交按钮的值仅在单击时提交,但您捕获此事件并执行e.preventDefault()。之后,currentForm.submit() 不再记得点击了哪个按钮。

    您可以在表单中动态添加隐藏输入:

    currentForm.append('<input type="hidden" name="action" value="delete" />');
    currentForm.submit()
    

    您可以在 PHP 中检查此隐藏输入的值,而不是检查 $_REQUEST['DeleteButton']

    $action = $_REQUEST['action'];
    if ($action == 'delete'):
        // ... delete the item
    endif;
    

    【讨论】:

    • 您能否详细说明一下。我只想在单击按钮时删除该项目。我怎样才能使用这个隐藏字段来完成这个?
    • 谢谢。这个答案救了我^_^
    猜你喜欢
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2011-10-17
    • 2023-03-07
    • 1970-01-01
    • 2011-02-07
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多