Checkbox cancel

Online-Skater

Erfahrenes Mitglied
Hallo habe folgendes Problem:

Ich kann mittels Checkboxen Elemente auswählen und wenn ich Sie löschen möchte dann möchte ich vorher eine JavaScript Abfrage machen ob er sich dessen bewusst ist.

Code:
function Check(question)
{
  bla = confirm(question);
  if (bla == false) history.back();
}

PHP:
echo '<form method="POST" action="?go='.$ds_link.'&amp;kat=ber&amp;opt=edit">
	  <table width="60%" class="rahmen">
	   <tr class="over">
	     <td width="90%"><span class="nick">header</span></td>
	     <td><span class="nick">selection</span></td>
	   </tr>';
while($row = mysql_fetch_object($erg))
{
  echo '<tr>
	    <td>'.$row->bereich.'</td>
	    <td><input type="checkbox" name="head[]" value="'.stripslashes($row->bereich).'" />
		   <input type="hidden" name="ids[]" value="'.$row->fid.'" /></td>
	  </tr>';
}
echo '  <tr>
	    <td colspan="2"><input type="submit" name="ber_edit" value="Edit" />
				     <input type="submit" name="ber_del" value="Delete" onclick="Check(\'Sure to delete this header ?\')" />
	    </td>
	   </tr>
         </table>
	</form>';

Ich möchte wenn ich auf "Abbrechen" klicke nichts passiert und wenn auf "OK" er dann weiterleitet. Dachte mittels header() aber ich weis nicht mal ob das geht. Suche also nach einer progfessionellen Lösung. Aktuell springt er egal was man drückt zu "action-pfad". Wie kann man das umgehen ?

mfg
 
Binde die Bestätigung mal an das „onsubmit“-Ereignis des Formulars und lass den Wert der confirm()-Funktion zurückgeben. Denn nur wenn das „onsubmit“-Ereignis ungleich „false“ ist, wird das Formular abgeschickt.
 
Danke Gumbo bis dahin, nur möchte ich die Abfrage an Bedingungen knüpfen und zwar nur wenn der "Delete"-Bttn gedrückt wurde und mind. ein Feld ausgewählt wurde.
Wie ich recherchiert habe sol les wohl nur schwer oder nicht möglich sein mit JavaScript abzufragen welcher Submitbttn gedrückt wurde ? Hier mein Versuch der nicht klappt, die Bedingung wird wohl nicht erfüllt.

Java:
function Check(foo,bar="")
{
  if (form.submitButton == "Delete")
  {
    for (var i=0; i<= length(document.choice.box);i++)
	{
	  if (document.choice.box[i].checked == true)
	  {
	    baz = confirm(foo);
	    break;
            return baz;
	  }
	}	
  }
  return true; 
}
PHP:
echo '<form id="choice" method="POST" action="?go='.$ds_link.'&amp;kat=ber&amp;opt=edit" onsubmit="return Check(\'Are you really sure ?\')">
			       <table width="60%" class="rahmen">
				    <tr class="over">
					 <td width="90%"><span class="nick">header</span></td>
					 <td><span class="nick">selection</span></td>
					</tr>';
			while($row = mysql_fetch_object($erg))
			{
			  echo '<tr>
			         <td>'.$row->bereich.'</td>
			         <td><input id="box" type="checkbox" name="head[]" value="'.stripslashes($row->bereich).'" />
					     <input type="hidden" name="ids[]" value="'.$row->fid.'" /></td>
					</tr>';
			}
			echo '  <tr>
			         <td colspan="2"><input type="submit" name="ber_edit" value="Edit" />
					                 <input id="del" type="submit" name="ber_del" value="Delete" onclick="this.form.submitButton=this.value" />
					 </td>
			        </tr>
				   </table>
				  </form>';
 
Zuletzt bearbeitet von einem Moderator:
Hi,

wenn Du die Prüffunktion an den auslösenden Button bindest, kannst Du diesen per this als Parameter übergeben.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">
  <!--
function Check(foo, objBtn){
  if (objBtn.value == "Delete"){
    var blnChecked = false;

    // Testen, ob mindestens eine Checkbox gesetzt wurde
    for(var i=0; i<document.getElementById("choice").elements['head[]'].length; i++){
      if(document.getElementById("choice").elements['head[]'][i].checked == true){
        blnChecked = true;
        break;
      }
    }

    if(confirm(foo) && blnChecked)
      return true;
    else
      return false;
  }
  return false;
}
 //-->
</script>

</head>
<body>
<form id="choice" method="POST" action="get_formdata_test.php">
	<table width="60%" class="rahmen">
	<tr class="over">
	 <td width="90%"><span class="nick">header</span></td>
	 <td><span class="nick">selection</span></td>
	</tr>
	<tr>
	 <td>Bereich 1</td>
	 <td><input id="box_0" type="checkbox" name="head[]" value="Bereich1" />
	     <input type="hidden" name="ids[]" value="00" />
	 </td>
	</tr>
	<tr>
	 <td>Bereich 2</td>
	 <td><input id="box_1" type="checkbox" name="head[]" value="Bereich2" />
	     <input type="hidden" name="ids[]" value="01" />
	 </td>
	</tr>
	<tr>
	 <td colspan="2"><input type="submit" name="ber_edit" value="Edit" />
	     <input id="del" type="submit" name="ber_del" value="Delete" onclick="return Check('Löschen?', this);" />
	 </td>
	</tr>
	</table>
</form>
</body>
</html>
Vielleicht hilft Dir das weiter.

Ciao
Quaese
 
Vielen Dank Quaese

Das mit dem übergeben hab ich auch versucht nur bei mir hatte es nicht geklappt :)
Bei der Version oben hab ich das scho aufgegeben gehabt ^^
Nunja wieder ein wenig JavaScript gelernt Thanks a lot

Etwas kürzer:
Java:
if (blnChecked) return confirm(foo);

mfg
 

Neue Beiträge

Zurück