Я написал 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», но после нажатия кнопки «Да» форма будет отправлена без удаления выбранного элемента.
Значение кнопки отправки отправляется только тогда, когда на нее нажимают, но вы ловите это событие и делаете e.preventDefault()
, После этого, currentForm.submit()
не помню больше, какая кнопка была нажата.
Вы можете динамически добавить скрытый ввод в форму:
currentForm.append('<input type="hidden" name="action" value="delete" />');
currentForm.submit()
И вместо проверки $_REQUEST['DeleteButton']
, вы можете проверить значение этого скрытого ввода в вашем PHP:
$action = $_REQUEST['action'];
if ($action == 'delete'):
// ... delete the item
endif;
Других решений пока нет …