Controllare che il form sia composto da soli numeri e non sia vuoto?

ppigna

Utente Attivo
23 Dic 2013
63
0
0
Buongiorno a tutti,
potete dirmi come creare il comando (e dove posizionarlo nel mio codice), in Javascript per controllare che un input (type="text") non sia vuoto e che sia composto da soli numeri (e in caso contrario inviare un alert con scritto "Compilare i campi con soli numeri")? Ho cercato su internet, ma non riesco a fare funzionarlo, forse perché la mia è una situazione particolare: ho un form che contiene tre input diversi, posizionati in diverse parte della pagina. Ecco il codice:
HTML:
<body>
		<div id="ac_background" class="ac_background">
			<img class="ac_bgimage" src="http://forum.mrwebmaster.it/images/galassia1.jpg" alt="Background"/>
			<div class="ac_overlay"></div>
			<div class="ac_loading"></div>
		</div>
		<div id="ac_content" class="ac_content">
			<h1>Oracolo del Web<span><br />Completa i campi e poi premi invio</span></h1>
			<form name="form" action="frase.php" method="post" onblur="return checkban()">
			<div class="ac_menu"> 
				<ul>
					<li>
						<a href="http://forum.mrwebmaster.it/images/galassia2.jpg">Giorno</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Giorno</h2>
							<ul>
								<li>Che giorno è oggi? Inserisci il numero qui sotto.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="giorno" size="15"><!-- <input type="button" name="Invia" value="  Invia  " size="10"> -->
							<?php //$giorno = htmlspecialchars($_POST['giorno']); ?>
						</div>
					</li>
					<li>
						<a href="http://forum.mrwebmaster.it/images/galassia3.jpg">Mese</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Mese</h2>
							<ul>
								<li>In che mese siamo oggi? Inserisci il numero qui sotto.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="mese" size="15"><!-- <input type="button" name="Invia" value="  Invia  " size="10"> -->
							<?php //$mese = htmlspecialchars($_POST['mese']); ?>
						</div>
					</li>
					<li>
						<a href="http://forum.mrwebmaster.it/images/galassia4.jpg">Nome</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Nome</h2>
							<ul>
								<li>Da quante lettere è formato il tuo (primo) nome? Inserisci il numero qui sotto.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="nome" size="15"><!-- <input type="button" name="Invia" value="  Invia  " size="10"> -->
							<?php //$nome = htmlspecialchars($_POST['nome']); ?>
						</div>
					</li>
					<li>
						<a href="http://forum.mrwebmaster.it/images/galassia5.jpg">Invio</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Invio</h2>
							<ul>
								<li><p>Premi Invia per visualizzare il responso dell'oracolo.</p></li>
								<li><br /></li>
							</ul>
							<input type="submit" name="Invia"  value="  Invia  " size="10" onclick="location.href='frase.php'">
						</div>
					</li>
				</ul>
			</div>
			</form>
		</div>
		<div class="ac_footer">
			<span>Copyright (c) 2013 oracolodelweb.altervista.org | All rights reserved | Template by: <a href="http://www.tympanus.net">tympanus.net</a></span>
			<span style="float:right; padding-right:5px">Created by Giulio Pignatti and Luca Nisidi</span>
		</div>
Grazie mille :)
 

ppigna

Utente Attivo
23 Dic 2013
63
0
0
ciao
criric ha ragione, però ricorda che i controlli js sono facilmente bypassabili
Bypassabili nel senso che si possono aggirare? In caso non sarebbe un gran problema: all'utenza del mio sito (prevalentemente ragazzi in cerca di svago) non interessa molto di fregarmi, lo script servirebbe solo per non indurli in errore.
(Con "ha ragione" intendi che quello è il js più adatto alla situazione?)
Grazie e buona serata :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
si, guardando il 3d indicato da criric trovi quello che ti serve.
si si possono aggirare e quindi inserire valori che possono provocare danni, è sempre meglio una verifica lato server
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
se me la adattassi al mio codice
devi solo copiare lo script nella pagina e aggiungere agli input che vuoi controllare
HTML:
onkeyup="char_consentiti(this)"
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ma se volessi che comparisse ANCHE un messaggio alert
puoi aggiungere un alert in questa parte dello script
Codice:
if (!valore.charAt(i).match(re)) {
    // avviso
    alert("Sono consentiti solo caratteri numerici");
    // aggiorno il valore del campo
    campo.value = valore.substring(0, i);
    // esco
    return;
}
 

ppigna

Utente Attivo
23 Dic 2013
63
0
0
puoi aggiungere un alert in questa parte dello script
Codice:
if (!valore.charAt(i).match(re)) {
    // avviso
    alert("Sono consentiti solo caratteri numerici");
    // aggiorno il valore del campo
    campo.value = valore.substring(0, i);
    // esco
    return;
}
Perfetto, grazie mille: mi sei stato molto d'aiuto :) buon pomeriggio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Danni di che genere?
prova a dare una letta veloce a questi esempi
se l'argomento ti interessa troverai in rete un sacco di articoli al riguardo
Calcola che se hai un sito online non sarà frequentato solo da persone che conosci e che non hanno nessun interesse a "fregarti"
purtroppo il web è pieno di personaggi che per noia o su commissione passano il tempo a tentare di rovinare il lavoro degli altri