Autor Zpráva
andrstom
Profil
Ahoj, řeším pro někoho úplnou prkotinu, ale prostě jsem se zasekl. Ve formuláři mám imput "MJ" (množstevní jednotka), který má být číslo. Potřebuji udělat funkci v javascriptu, která mi ověří, že je do imputu zadané číslo a pokud ne tak vyhodí alert a kursor zůstane v tomto imputu. Toto všechno bych tak nějak zvládnul, ale narazil jsem na problém - Pokud si vypíšu formulář s databáze pomocí while tak nevím jak nejlépe identifikovat jednotlivé imputy "MJ" a "KusuTestuBaleni" a jak je pak pomocí javascriptu zpracovat. Určitě je to hovadinka - potřebuju nakopnout :-)

Přikládám kod:
<script type='text/javascript'>
function jeCislo() {
  if(!$.isNumeric($("#MJ").val())){
    //alert("Není celé číslo!");
    document.getElementById("MJ").focus();
  }
}
</script>

<form method="POST" id="formDoplnit" action="./rsrc/update_szm.php">
  <table id="tableDoplnit" border='1'>
    <tr><th>Název</th><th>MJ</th><th>Kusů/testů v balení</th></tr>
    <?php
    
    //include pro spojeni s databazi
    
    // SQL pro nacteni zbozi s prazdnou FS, MJ a počtem kusu/testu apod.
    $qPrazdne = mysql_query("SELECT * FROM `tabulka` WHERE MJ='' "); 
    while($rPrazdne = mysql_fetch_array($qPrazdne)){
    ?>
      <tr>
        <td><?php echo $rPrazdne['NazevMediox']; ?></td>
        <td><input type='text' name='update[<?php echo $rPrazdne['Id']; ?>][MJ]' id="MJ" onchange="jeCislo()" class='form-control' value="" required /></td>
        <td><input type='text' name='update[<?php echo $rPrazdne['Id']; ?>][KusuTestuBaleni]' id="KusuTestuBaleni" onchange="jeCislo()" class='form-control' value="" required/></td>
      </tr>
      <?php
      }
    ?>
  </table>
<input type="submit" name="Update" id="Update" class="btn btn-primary" value="Uložit" />
</form>

Toto funguje pok je jen jeden řádek. Jak už to bývá je jich vždycky o něco víc :-)
Kcko
Profil
Teoreticky:

jeCislo() za jeCislo(this)
a
function jeCislo(obj) {

  var $this = $(obj);
  if(!$.isNumeric($this.val())){
    //alert("Není celé číslo!");
    $this.focus(); // nebo $this[0].focus();
  }
}

Celkově je ten kód divný, nevím jestli stačí kontrolovat onchange, může ti to tam někdo pastnout, nebo taky bys měl zachytávat jednu z událostí keyup/keydown/keypress a hlavně, bys to měl kontrolovat v PHP.

A koncepce jQuery když už to v něm píšeš není psaní eventů do elementů ale binduješ elementy samostatně. Tj něco jako

$("formular input").on("event", tvojeFunkce);
andrstom
Profil
Díky moc, za radu...zkusi to tam nějak zakomponovat. Jsem nováčkem a neuvědomuju tolik souvislosti. PHPkem to odkontrolovaný mám přes regulární výraz. Jen jsem to chtěl uživatelsky z(ne)příjemnit.
Kcko
Profil
andrstom:
Chápu, ale zrovna tady mi to přijde spíše jako znepříjemnění. Když už tedy nedovolíš psát nic jiného než čísla, měl bys na to nějak upozornit (nějakou hlášku přímo při validaci nebo ještě před ní ).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0