Salve a tutti, ho iniziato da poco lo studio di javascript ma mi sono già imbattuto in un grosso problema che non riesco a superare e spero nell'aiuto di qualcuno di voi.
Ho realizzato un semplice form in html e, tramite una funzione js, vorrei gestire la validazione dei singoli input.
Ho scelto come evento onblur() perchè mi serve un controllo campo per campo da eseguire appena il campo stesso perde il focus e, per una serie di ragioni, il collegamento tra il tag input e la funzione js vorrei realizzarlo direttamente sul tag html senza utilizzare forme del tipo addEventListener("blur", myFunction) o myobj.onblur=myfunction().
Il controllo si basa sulla verifica che il valore inserito non sia vuoto e non sia 'pippo' (è un esempio, in futuro i controlli saranno passati alla funzione come parametri).
Vi riporto il codice :
Ora veniamo al problema. Funziona perfettamente su tutti i browser provati ma solo sotto os Windows. Io invece lavoro su osx (yosemite 10.10.1) e ho provato con firefox 49.0, chrome 53.0.2785 e safari 8.0.
Il difetto con osx consiste nel fatto che quando simulo un inserimento non consentito, mi visualizza l'alert, poi :
- su chrome imposta il focus correttamente sull'input da correggere ma mi ripresenta l'alert ciclicamente impedendomi di scrivere.
- su firefox invece sbaglia il focus e lo imposta all'input successivo lasciando il campo precedente vuoto (valore non consentito) e permettendomi di inserire il valore dell'input successivo.
Ho iniziato da pochi giorni ad imparare html, js e php ma provengo da tanti anni di programmazione in clipper e cose del genere per me sono davvero inconcepibili. Spero tanto di essere io ad avere sbagliato qualcosa anche perchè mi sembra impossibile che per gli utilizzatori osx non sia possibile risolvere un problema così semplice.
Ringrazio tutti per la pazienza e confido in voi.
Ho realizzato un semplice form in html e, tramite una funzione js, vorrei gestire la validazione dei singoli input.
Ho scelto come evento onblur() perchè mi serve un controllo campo per campo da eseguire appena il campo stesso perde il focus e, per una serie di ragioni, il collegamento tra il tag input e la funzione js vorrei realizzarlo direttamente sul tag html senza utilizzare forme del tipo addEventListener("blur", myFunction) o myobj.onblur=myfunction().
Il controllo si basa sulla verifica che il valore inserito non sia vuoto e non sia 'pippo' (è un esempio, in futuro i controlli saranno passati alla funzione come parametri).
Vi riporto il codice :
HTML:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form name="form1" action="cli.php" method="POST">
RAGIONE SOCIALE : <input type="text" id="fname" tabindex="1" onblur="valid1(this)" >
<br>
RAGIONE SOCIALE 2: <input type="text" id="riga2" tabindex="2" onblur="valid1(this)" >
<br>
INDIRIZZO : <input type="text" id="findi" tabindex="3" onblur="valid1(this)" >
<br>
CITTA : <input type="text" id="fcitta" tabindex="4" onblur="valid1(this)" >
<br>
PROV : <input type="text" id="fprov" tabindex="5" onblur="valid1(this)" >
<br>
CAP : <input type="text" id="fcap" tabindex="6" onblur="valid1(this)" >
</form>
<script>
function valid1(obj) {
var x = obj.value;
if ((x == "pippo") || (x=="")) {
alert("VALORE NON CONSENTITO");
obj.value = "";
obj.blur();
obj.focus(false,300);
return false;
}
return true;
}
</script>
</body>
</html>
Ora veniamo al problema. Funziona perfettamente su tutti i browser provati ma solo sotto os Windows. Io invece lavoro su osx (yosemite 10.10.1) e ho provato con firefox 49.0, chrome 53.0.2785 e safari 8.0.
Il difetto con osx consiste nel fatto che quando simulo un inserimento non consentito, mi visualizza l'alert, poi :
- su chrome imposta il focus correttamente sull'input da correggere ma mi ripresenta l'alert ciclicamente impedendomi di scrivere.
- su firefox invece sbaglia il focus e lo imposta all'input successivo lasciando il campo precedente vuoto (valore non consentito) e permettendomi di inserire il valore dell'input successivo.
Ho iniziato da pochi giorni ad imparare html, js e php ma provengo da tanti anni di programmazione in clipper e cose del genere per me sono davvero inconcepibili. Spero tanto di essere io ad avere sbagliato qualcosa anche perchè mi sembra impossibile che per gli utilizzatori osx non sia possibile risolvere un problema così semplice.
Ringrazio tutti per la pazienza e confido in voi.