Autor Zpráva
RomanovicP
Profil
Chtěl bych se zeptat, jak mohu udělat, aby se do textového pole (input) daly napsat jenom čísla, popř. že až se pole vyplní a pošle, tak aby bylo zkontrolovalo, že tam nejsou písmena, ale pouze čísla.
Díval jsem se do diskuzí, ale asi jsem nepochopil způsob.
dmfzd
Profil
umím to v javascriptu:

<SCRIPT LANGUAGE="JavaScript">
function zkontroluj(formular)
{
	if (formular.hodnota.value == "")
	{
		alert("Vyplňte prosím pole ''hodnota''");
		return false;

	}


	else if (formular.hodnota.value.match(/\D/))
	{
		alert("Neplatná hodnota. Zadávejte prosím číslice 0-9.");
		formular.hodnota.value = "";
		formular.hodnota.focus();
	return false;
	}
	else
	{
	return true;
	}
}  
//
</SCRIPT>



<form method="post" action="www.neco.cz/neco.php" onSubmit="return zkontroluj(this)">
Napište číslo: 
<input type="text" name="hodnota" size="5">
<input type="submit" value="Odeslat">
</form>


je tam i kontrola, jestli je pole vůbec vyplněné...
a pak, když jsou tam třeba písmena, aby to vyhodilo hlášku "Neplatná hodnota. Zadávejte prosím číslice 0-9." a vymazalo to ty písmena z toho inputu...
SwimX
Profil
RomanovicP:
až se pole vyplní a pošle, tak aby bylo zkontrolovalo, že tam nejsou písmena, ale pouze čísla.
to zase přes PHP
<?php
$input = $_POST['name'];
if(preg_match('/^([0-9]+)$/', $input) {
  
}
?>


dmfzd:
a vymazalo to ty písmena z toho inputu...
formular.hodnota.value = "";

a ty čísla taky :))

RomanovicP:
řešení, které napsal dmfzd kontroluje zda jsou vyplněná pouze čísla až po odeslání formuláře, což sice je dobré protože JS to zkontroluje rychleji než PHP, pro které je potřeba reload stránky, ale kontrolu v php bych ponechal, protože JS jde vypnout.

Jinak by ještě pomocí JS šlo odchytávat znaky, které uživatel právě píše. Nějak takle:
 kontrol_psc = document.getElementById("psc");
        with (kontrol_psc) onchange = onclick = ondblclick = onmousedown = onmouseup = onkeypress = onkeydown = onkeyup = function() {
        var REpsc = new RegExp("^[0-9]$");          
          if(REpsc.test(kontrol_psc.value)
            document.getElementById("spsc").innerHTML = "<img src='images/good.jpg' width='21' height='19' alt='Dobře'>";
          else document.getElementById("spsc").innerHTML = "<img src='images/bad.jpg' width='20' height='20' alt='Špatně'>";
        }

with nedoporučuji používat, pokud přesně nevíte co dělá v tomto případě bych v něm problém ale neviděl
RomanovicP
Profil
JS chapu, pomocí něho mám nějaké kontroly na jméno a příjmení, ale to PHP ... zkusím a uvidím, co to dělá, neb jsem trochu nepochopil princip, ale je pravda, že se stále učím.
Akorát na prvním řádku máš
("psc")
a na 5 a 6
("spsc")
. To je chyba nebo úmysl?
RomanovicP
Profil
Ještě v tom JavaScriptu... když teda nevím, jak pracuje to PHP a nikdo mi to tu neřekne...
Šlo by nějak obejít
  else if (formular.hodnota.value.match(/\D/))

a přidat k tomu promě čísel ještě znaménko + ? Momentálně mi jde o telefoní číslo v mezinárodním formátu...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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