Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Controllo campo con return false problematico in Netscape

    Ciao a tutti raga,
    ho un problema con un campo di testo sul quale applico un controllo.
    Di fatto in IE funziona correttamente, cioè se il valore del campo non è del tipo richiesto viene visualizzato un alert ed il focus viene riportato sul campo contenente il valore errato.
    In Netscape viene visualizzato l'alert ma il focus passa al campo successivo... sapreste darmi una spiegazione? Posto il codice per chiarezza.

    Grazie a tutti.
    codice:
    var defaultEmptyOK = true;
    
    //CONTROLLA SE UNA STRINGA E' VUOTA
    //Valore restituito: TRUE se "s" è vuota.
    function isEmpty(s) {return ((s == null) || (s.length == 0))}
    
    
    //CONTROLLA SE UN CARATTERE E' UNA CIFRA
    //Valore restituito: TRUE se "c" è una cifra.
    function isDigit (c) {return ((c >= "0") && (c <= "9"))}
    
    
    //CONTROLLA SE UNA STRINGA E' UN NUMERO INTERO SENZA SEGNO
    //Valore restituito: TRUE se tutti i caratteri di "s" sono cifre.
    function isInteger (s){ 
    	if (isEmpty(s)) 
    		if (isInteger.arguments.length == 1) return defaultEmptyOK;
    		else return (isInteger.arguments[1] == true);
    	for (var i = 0; i < s.length; i++) {   
    		var c = s.charAt(i);
    		if (!isDigit(c)) return false;
    	}
    	return true;
    }
    
    function qOK(object) {
    	if (!isInteger(object.value)) {
    		alert((lingua == "en" ? 'Quantity must be a number, please.' : 'Inserire un valore corretto per la quantità.'));
    		object.select();
    		return false;
    	}
    }
    __
    ..... Le nostre azioni non sono il risultato del libero arbitrio
    www.sinapsicompany.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Quello script e` un po' piu` complicato del necessario: e` stato scritto da qualcuno bravo, ma che non conosceva le RegExp.

    Ci sono anche alcune cose non completamente corrette:
    1. la variabile lingua non e` definita
    2. nell'alert le parentesi andrebbero risitemate:

    alert((lingua == "en") ? 'Quantity must be a number, please.' : 'Inserire un valore corretto per la quantità.');

    Poi nella chiamata alla funzione qOK() occorre passare un oggetto (non il suo nome).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3

    Grazie Mich_...

    per le tue precisazioni, di fatto lo script non l'ho scritto io ma un mio collega... ma il mio problema resta... sai perchè Netscape si fa beffa del return false e porta il focus sul campo successivo?

    Grazie di nuovo
    ..... Le nostre azioni non sono il risultato del libero arbitrio
    www.sinapsicompany.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non lo avevo notato prima.
    Le <select> non hanno il metodo select().
    Devi usare focus():

    object.focus();
    return false;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.