Autor Zpráva
Enko
Profil
Ahoj Hledám řešení jak ověřit následující:
mám z PHP generovaný HTML formulář, který obsahuje stejně pojmenované checkboxy, jen očíslované polem:
<input type="checkbox" name="f_odstranit[7]" value="1" >
<input type="checkbox" name="f_odstranit[8]" value="1" >
<input type="checkbox" name="f_odstranit[9]" value="1" >
<input type="checkbox" name="f_odstranit[...]" value="1" >
A rád bych po odeslání formu zobrazil window alert s hláškou "Opravdu chcete odstranit vybrané blabla..." s tlačítkem OK, které by dokončilo zpracování formu na serveru anebo storno. Našel jsem návod, jak toto udělat s jedním checkboxem, který má konstantní jméno, ale nevím jak to udělat s proměnným názvem viz příklad výše. Budu rád za každou radu nebo návod.
Chamurappi
Profil
Reaguji na Enka:
S čím konkrétně máš potíže? Ke stavu zaškrtávátka se dostaneš přes formulář["f_odstranit[7]"].checked, kde formulář je objekt formuláře (při onsubmit je v this).
janbarasek
Profil
Enko:
Na to budou stačit prosté funkce a možná trocha ajaxu (ale jde to i bez něj).

<script>
function selectbox(id) {
   Alert("Opravdu chcete odstranit "+id+"?");
   // tady si doprogramuj ajaxově smazání...
   return 0;
}
</script>

<input type="checkbox" name="f_odstranit[8]" value="1" onclick="selectbox(8);">
Chamurappi
Profil
Reaguji na janbaraska:
Samotná změna stavu zaškrtávátka by nikdy neměla vést k velkým akcím. Mazat něco hned při zaškrtnutí důrazně nedoporučuji.

Alert("Opravdu chcete odstranit "+id+"?");
Dialog alert (s malým a) má jen jedno tlačítko OK. Na potvrzování se používá confirm, který pak vrací true/false podle toho, zda uživatel vybral OK/Storno.
weroro
Profil
janbarasek:
A keď si nebude priať zmazať vybranú položku? Nechcel si tam použiť confirm()?
Enko
Profil
Ahoj,
děkuju všem za odpovědi, upřesním tedy co přesně potřebuji. Mám formulář viz první příspěvek. V tomto formuláři když kliknu na submit tlačítko a je zaškrtlý nějaký checkbox (viz kód z prvního příspěvku) aby se ukázalo okno s hláškou jestli chce uživatel opravdu smazat vybrané záznamy a tlačítky OK, který dokončí běžné zpracování formuláře na serveru anebo tlačítkem Storno.
V javascriptu se zatím učím, tak prosím o vysvětlení polopaticky.
Zatím jsem stvořil toto, ale nefunguje to vůbec. Nevím jak se přesně zachází s proměnnými v JS.

   <script type="text/javascript">
   function selectbox(id) {
     if (document.form.f_odstranit[id].checked==true){
       window.alert("Opravdu chcete odstranit "+id+"?");
     }
   }
</script>
   <form  name="form" action="" method="POST">
    <input type="checkbox" name="f_odstranit[7]" onclick="selectbox(7);" value="1" >
    <input type="checkbox" name="f_odstranit[8]" onclick="selectbox(8);" value="1" >
    <input type="checkbox" name="f_odstranit[9]" onclick="selectbox(9);" value="1" >
    <input type="submit" name="f_ok" value="Upravit">
   </form>
weroro
Profil
Neviem, čo sa má stať, keď nie je zaškrtnutý žiadny checkbox, tak som nastavil aby sa formulár neodoslal v takom prípade vôbec.
<!DOCTYPE HTML>
<meta charset="utf-8">  
<title>jpw</title>  
<form name="form" action="" method="POST">
  <input type="checkbox" name="f_odstranit[7]" value="1" >
  <input type="checkbox" name="f_odstranit[8]" value="1" >
  <input type="checkbox" name="f_odstranit[9]" value="1" >
  <input type="submit" name="f_ok" value="Upravit">
</form>
<script type="text/javascript">
  document.form.onsubmit = function () {
      var chbx = this.getElementsByTagName('input');
      var txt = '';
      for (var i = 0; i < chbx.length; i++) {
          var c = chbx[i];
          if (c.type == 'checkbox' && c.checked) {
              txt += "\n" + c.name;
          }
      }
      return (txt.length && confirm('Opravdu chcete odstranit?' + txt));
  }
</script>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: