this.options[this.selectedIndex].value
Questo serve per catturare il valore di una opzione di una select,
per catturare invece il valore in quel momento di una - INPUT TYPE = "TEXT" - ?
In Javascript sono una rapa, solo Internet mi aiuta!!
this.options[this.selectedIndex].value
Questo serve per catturare il valore di una opzione di una select,
per catturare invece il valore in quel momento di una - INPUT TYPE = "TEXT" - ?
In Javascript sono una rapa, solo Internet mi aiuta!!
Ciao kekkosf,
una delle sintassi è
se il codice lo metti in un evento dell'input puoi usare il thiscodice:document.NomeForm.NomeText.value
codice:<input type="text" name="NomeText" onchage="alert(this.value);">![]()
c'ero arrivato, solo che bisognava mettere nell'Input anche il VALUE.
Adesso ti pongo il quesito successivo.
Devo controllare una data, pertanto ho realizzato questo js :
function dataPrg(data,campo,mform)
{
var adesso = new Date(data);
var anno = adesso.getFullYear();
if ((data.length != 8) && (data.length != 6))
{
newdata = '01/01/'+anno;
alert('Formato data irregolare');
}
if (data.length == 6)
{
newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+anno.substr(0,2)+data.substr(4,2);
}
if (data.length == 8)
{
newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+data.substr(4,4);
}
document.mform.campo.value = newdata;
}
Dopo di che nella form(skecon) ho creato delle caselle di Input così :
da <INPUT TYPE="Text" Name="Da" MAXLENGTH="6" VALUE = "" Size="7"
style="background:#99CCFF;color:#0066FF;font-family:Verdana"
ONBLUR = "dataPrg(this.value,'skecon,'Da')">
Per quale cavolo di motivo non funziona ?
In Javascript sono una rapa, solo Internet mi aiuta!!
anche senza value nell'input funzionerebbe... solo che ho scritto onchage invece di onchangeOriginariamente inviato da kekkosf
c'ero arrivato, solo che bisognava mettere nell'Input anche il VALUE.
per quanto riguarda il nuovo script ci sono un po' di cose che non vanno
te lo sistemo un po'
e il richiamo cosìcodice:function dataPrg(data,campo,mform) { var adesso = new Date(); var anno = ''+adesso.getFullYear(); if ((data.length != 8) && (data.length != 6)) { newdata = '01/01/'+anno; alert('Formato data irregolare'); } if (data.length == 6) { newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+anno.substr(0,2)+data.substr(4,2); } if (data.length == 8) { newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+data.substr(4,4); } document.forms[mform].elements[campo].value = newdata; }
però non ha tanto senso... il campo al massimo accetta 6 caratteri e nello script controlli se ne vengono inseriti 8 o 6.... e poi altre cose delle quali te ne renderai conto provando.codice:ONBLUR="dataPrg(this.value,'Da','skecon')"
![]()
Allora ho subito cambiato la grandezza non me ne ero accorto, ho cambiato anche la size, adesso funziona e alla grande.
A - Secondo te cosa altro c'è di sbagliato ?
B - Chiaramente ho anche un campo "A", potrei fare un controllo fra date, quando viene dato il submit ?
C - Dovrei verificare anche la compilazione di tutti i campi, di cui 1 è una "select", il che significa che all'"ONSubmit" dovrei lanciare una routine particolare.
D - Nella funzione si possono attribuire costanti ?
Es. in php :
Function ControllaData ($a, $b, $c=1){....}
Il che significa che la variabile $a e $b mi devono arrivare per forza, mentre $c se non arriva è uguale a 1 se arriva è diversa.
VVoVe:
function dataPrg(data,campo,mform,giorno)
{
var adesso = new Date();
var anno = ''+adesso.getFullYear();
GGinput = data.substr(0,2);
MMinput = data.substr(2,2);
AAinput = data.substr(4,4);
var month = New Array();
month[01] = 31;
month[03] = 31;
month[04] = 30;
month[05] = 31;
month[06] = 30;
month[07] = 31;
month[08] = 31;
month[09] = 30;
month[10] = 31;
month[11] = 30;
month[12] = 31;
Resto = AAinput % 4;
if (Resto == 0)
{
month[02] = 29;
}
else
{
month[02] = 28;
}
if ((data.length != 8) && (data.length != 6) && (data.length != 10))
{
newdata = giorno+'/01/'+anno;
alert('Formato data irregolare');
}
if (data.length == 10)
{
if (0 < MMinput < 13)
{
indice = data.substr(2,2);
if (month[indice] < GGinput)
{
alert('Rapporto giorni mese errato.');
newdata = giorno+'/01/'+anno;
document.forms[mform].elements[campo].value = newdata;
}
}
else
{
alert('Mese Inesistente!');
newdata = giorno+'/01/'+anno;
document.forms[mform].elements[campo].value = newdata;
}
}
if (data.length == 6)
{
newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+anno.substr(0,2)+data.substr(4,2);
document.forms[mform].elements[campo].value = newdata;
}
if (data.length == 8)
{
newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+data.substr(4,4);
document.forms[mform].elements[campo].value = newdata;
}
}
</SCRIPT>
Ha un errore di sintassi, manca un ";".
Ma non c'è un debugger ?
if (data.length == 6)
{
GGinp = data.substr(0,2);
MMinp = data.substr(2,2);
AAinp = anno.substr(0,2) + data.substr(4,2);
Resto = AAinp % 4;
if (Resto == 0)
{
mese[2] = 29;
}
else
{
mese[2] = 28;
}
if ((MMinp < 13) && (MMinp > 0))
{
if (mese[MMinp] < GGinp)
{
alert('Rapporto giorni mese errato.');
newdata = giorno+'/01/'+anno;
document.forms[mform].elements[campo].value = newdata;
}
else
{
newdata = data.substr(0,2)+'/'+data.substr(2,2)+'/'+anno.substr(0,2)+data.substr(4,2);
document.forms[mform].elements[campo].value = newdata;
}
}
else
{
alert('Mese Inesistente!');
newdata = giorno+'/01/'+anno;
document.forms[mform].elements[campo].value = newdata;
}
}
ciao io nn ne so molto di javascript ma secondo me invece di utilizzare tutti quegli if potresti usare lo switch case così risparmi spazzio e diventa più leggibile .... no?
ciao a tutti
Non ho capito tutto quel programma.
Se devi controllare se una data esiste, basta che la trasformi in data e poi usi i metodi di Date():
codice:function dataPrg(data,campo,mform,giorno) { var tmp = data.split(/[\/\:\.]/); var adesso = new Date(); if(parseInt(tmp[2],10) < 100) tmp[2] = "19"+tmp[2]; var dat_inp = new Date(parseInt(tmp[2],10), parseInt(tmp[1],10)-1, parseInt(tmp[0],10)); if( tmp[2]!=dat_inp.getFullYear() || tmp[1]!=dat_inp.getMonth()+1 || tmp[0]!=dat_inp.getDate() ) { alert("la data non e` corretta"); // ... } }
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Allora la data può essere inserita in + modi :
010104
01012004
01/01/2004
Devo controllare come è stata inserita e se è corretta.