2016-11-26 7 views
0

Ich habe einen PHP-Code geschrieben, in dem, wenn ich auf Senden klicke, ein Eintrag in der Combobox gelöscht wird. Jetzt möchte ich Bestätigung und ich schrieb unter Code, der nicht funktioniert. PHP-Code:JQuery-Bestätigungsdialog bei Submit-Klick in 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 Teil:

<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> 

Das Problem ist dieser Code funktioniert nicht. Wenn ich jQuery Teil nicht hinzufüge, funktioniert der Code tadellos, aber nachdem ich jQuery Teil hinzufüge, als ich Absendeknopf anschalte, erscheint der jquery Dialog, aber nach dem Klicken yes Knopf wird das Formular übermittelt, ohne vorgewähltes Einzelteil zu löschen.

Antwort

0

Der Wert der Schaltfläche "Senden" wird nur gesendet, wenn darauf geklickt wird, aber Sie fangen dieses Ereignis ein und führen eine e.preventDefault() aus. Danach erinnert sich currentForm.submit() nicht mehr an welche Taste geklickt wurde.

Sie könnten einen versteckten Eingang in das Formular dynamisch hinzufügen:

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

Und statt $_REQUEST['DeleteButton'] zu überprüfen, können Sie diesen versteckten Eingabewert in Ihrem PHP überprüfen:

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

könnten Sie bitte erarbeiten mehr . Ich möchte nur das Element auf Knopfdruck löschen. Wie kann ich dieses versteckte Feld verwenden, um dies zu erreichen? – Amir

+0

Danke. Diese Antwort hat mich gerettet^_ ^ – Amir

Verwandte Themen