[Javascript] Problema focus() solo su osx

antoniocangiano76

Nuovo Utente
27 Ago 2016
4
0
1
20
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 :

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.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, prova cosi
Codice:
function valid1(obj) {
                var x = obj.value;
                if ((x == "pippo") || (x == "")) {
                    alert("VALORE NON CONSENTITO"); 
                    obj.value = "";
                    obj.focus();                 
                }
            }
non è obbligatorio mettere i return se non ti servono. Il metodo focus non accetta parametri se ricordo bene e il blur() a che ti serve?
 

antoniocangiano76

Nuovo Utente
27 Ago 2016
4
0
1
20
Ciao, grazie per la risposta. La funzione originale era esattamente come quella che mi hai proposto. Le altre aggiunte (blur e i return) le ho inserite successivamente cercando su internet una soluzione al mio problema. Sai, provengo da un linguaggio di programmazione molto diverso e che uno stesso sorgente possa dare origine a risposte così diverse in base al browser e/o al s.o. usato faccio fatica ad accettarlo.
Su google il problema è noto e ho provato molte soluzioni proposte ma nessuna sembra risolvere il problema.
Sto cercando di migrare un programma di gestione che avevo realizzato oltre 20 anni fa in clipper su web e creare una funzione personalizzabile di validazione dati è fondamentale come lo è che debba avere gli stessi comportamenti su tutte le piattaforme.
Comunque provo la routine così come me la proponi e ti faccio sapere.
Spero di venirne a capo.
 
Discussioni simili
Autore Titolo Forum Risposte Data
grgfede Problema javascript con aruba Javascript 1
L [Javascript] Problema salvataggio dati in db Javascript 1
S [Javascript] Problema costrutto if Javascript 0
S [Javascript] Problema con condizione "if" Javascript 2
Z Problema Galleria Javascript Javascript 1
trattorino [Javascript] scrool top problema Javascript 1
C [Javascript] problema nell'utilizzo di un array Javascript 2
P [Javascript] problema menu responsive su aruba, editor bk Javascript 1
G [Javascript] Problema parametro passato con ajax Javascript 4
G [Javascript] Problema modal con scrollbar Javascript 0
A [Javascript] problema con draggable Javascript 0
L [javascript]problema funzione per webapi Javascript 4
A PROBLEMA INTERAZIONE PHP E JAVASCRIPT PHP 1
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
Antonio Nervi [Javascript] Problema visualizzazione banner accettazione cookies Javascript 6
borgo italia [Javascript] un problema con ckeditor Javascript 3
bubino8 [Javascript] Problema function eseguita solo la prima volta Javascript 1
A [Javascript] Problema visualizzazione posizione corrente su mappa Javascript 2
A Problema con getCurrentPosition e passaggio variabili da javascript a PHP Javascript 3
F [Javascript] Problema su sticky sidebar Javascript 0
S [Javascript] [HTML] problema nella stampa degli elementi della pagina Javascript 3
W [Javascript] Problema: Copiare testo da un iframe? Javascript 4
L Problema con javascript e server Javascript 3
S [Javascript] Problema richiamo funzione Javascript 8
F [Javascript] Problema funzione jquery con elementi css esterni Javascript 1
A PROBLEMA SITO SU JAVASCRIPT Javascript 6
E [Javascript] problema con margine quando viene mostrato div Javascript 0
S Problema con script php-javascript PHP 2
L [WordPress] Problema Javascript nel log del browser WordPress 1
S problema con gli array in javascript Javascript 12
M problema ciclo javascript Javascript 4
C Problema con OnClick Javascript Javascript 13
A problema : codice javascript Javascript 1
C Problema javascript su chrome e firefox Javascript 2
H problema con select dinamiche e javascript Javascript 0
M Problema con aggiornamento variabili da web server con javascript Javascript 1
X Problema con php e javascript jQuery 0
M problema con JavaScript Javascript 2
F Problema di programmazione in javascript Javascript 2
V Problema php / javascript Presentati al Forum 1
S Problema con javascript Javascript 3
F [risolto] Problema javascript Internet Explorer Javascript 1
S Problema non riconosce javascript Javascript 7
S Problema javascript singoli apici Javascript 3
S Problema PHP + Javascript PHP 1
T [Javascript] [RISOLTO] Problema con Google Maps e "Zero_Results" Javascript 11
C Problema form javascript che non funziona Javascript 4
P Problema ocon verifica campo in javascript Javascript 7
S Problema trasformazione array php in javascript PHP 0
F Javascript: problema con onclick event Javascript 3

Discussioni simili