Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    [addEventListener] Passare un valore ad una funzione

    Passare un valore ad una funzione mediante questa sintassi:
    codice:
                    // Controlla che i valori inseriti nel campo siano solo numerici
    		// Se è così ve li inserisce
    		var ctrlIsNumeric = function() {
    			var ret = stripNonNumeric(this.value);
    			if (ret != '') element('rg').value = ret;
    		}	// ctrlIsNumeric()
    
                    // Gestione degli eventi del mouse (e non solo))
    		function gestoreEvento(id, evento, nomeFunzione) {
    			if (element(id).addEventListener) {	// Mozilloidi
    				element(id).addEventListener(evento, nomeFunzione, false);
    			} else if (element(id).attachEvent) {	// M$
    				element(id).attachEvent('on' + evento, nomeFunzione);
    			}
    		}	//	gestoreEvento()
    
                    window.onload = function() {
    			element('data-odierna').innerHTML = creaData();
    			
    			if(document.getElementsByTagName && document.createElement) {
    				// Controlla che quanto digitato nel campo sia numerico
    				gestoreEvento('rg', 'keyup', ctrlIsNumeric);
                            }
    		}	//	onload()
    questo il codice attuale e funziona, ma io vorrei poter dire al "sistema" su quale campo monitorare i caratteri immessi, magari mediante il passaggio del nome del campo da controllare.
    Ho provato così: gestoreEvento('rg', 'keyup', ctrlIsNumeric('rg')); ma mi da giustamente errore.
    Ho provato anche così:
    codice:
                    // Gestione degli eventi del mouse (e non solo))
    		function gestoreEvento(id, evento, nomeFunzione) {
    			if (element(id).addEventListener) {	// Mozilloidi
    				element(id).addEventListener(evento, nomeFunzione(id), false);
    			} else if (element(id).attachEvent) {	// M$
    				element(id).attachEvent('on' + evento, nomeFunzione(id));
    			}
    		}	//	gestoreEvento()
    In fondo ho pensato, l'id già glielo passo perché ripassarglielo? Ma per lo stesso motivo di prima non va.
    Come posso fare per passare l'id del campo in modo da rendere generica la funzione ctrlIsNumeric() per qualsiasi campo?

  2. #2
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Forse ho trovato il modo
    codice:
                    // Toglie i caratteri non numerici dal campo
    		function stripNonNumeric(str) {
    			str += '';
    			var rgx = /^\d|\.|-$/;
    			var out = '';
    			for( var i = 0; i < str.length; i++ ){
    				if( rgx.test( str.charAt(i) ) ){
    					if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ||
    						( str.charAt(i) == '-' && out.length != 0 ) ) ){
    						out += str.charAt(i);
    					}
    			    }
    			}
    		return out;
    		}	//	stripNonNumeric()
    
                    // Controlla che i valori inseriti nel campo siano solo numerici
    		// Se è così ve li inserisce
    		var ctrlIsNumeric = function(id) {
    			var ret = stripNonNumeric(this.value);
    			//if (ret != '') 
    			element(id).value = ret;
    		}	// ctrlIsNumeric()
    
                    // Gestione degli eventi del mouse (e non solo))
    		function gestoreEvento(id, evento, nomeFunzione) {
    			if (element(id).addEventListener) {	// Mozilloidi
    				element(id).addEventListener(evento, nomeFunzione, false);
    			} else if (element(id).attachEvent) {	// M$
    				element(id).attachEvent('on' + evento, nomeFunzione);
    			}
    		}	//	gestoreEvento()
    
                    window.onload = function() {
    			element('data-odierna').innerHTML = creaData();
    			
    			if(document.getElementsByTagName && document.createElement) {
    				// Controlla che quanto digitato nel campo sia numerico
    				gestoreEvento('rg', 'keyup', function(){ctrlIsNumeric('rg')});
                            }
    		}	//	onload()
    Funziona nel senso che passa effettivamente il valore del nome del campo, ho controllato col classico alert(id); e funge
    Ma ora ha un comportamento strano, ovvero non accetta più alcun carattere

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Nessuno comprende come mai si comporta così?

  4. #4
    Codice PHP:
    <script type="text/javascript">
    function $(
    id){
        return    
    document.getElementById(id);
    };
    function 
    getTargetevt ){ 
        
    evt evt || window.event || null
        return 
    evt?(evt.target||evt.srcElement||null):null
    }; 
    function 
    stripNonNumeric(str) {
        
    str += '';
        var 
    rgx = /^\d|\.|-$/;
        var 
    out '';
        for( var 
    0str.lengthi++ ){
            if( 
    rgx.teststr.charAt(i) ) ){
                if( !( ( 
    str.charAt(i) == '.' && out.indexOf'.' ) != -) || ( str.charAt(i) == '-' && out.length != ) ) ){
                    
    out += str.charAt(i);
                }
             }
        }
        return 
    out;
    }    
    //    stripNonNumeric()
    var ctrlIsNumeric = function(e) {
        var 
    ret stripNonNumeric(getTarget(e).value);
        if (
    ret != ''getTarget(e).value ret;
    }    
    function 
    addEvent(elmevTypefnuseCapture){
        if (
    elm.addEventListener){
            
    elm.addEventListener(evTypefnuseCapture);
            return 
    true;
        } else if (
    elm.attachEvent) {
            var 
    elm.attachEvent('on' evTypefn);
            return 
    r;
        } else {
            
    elm['on' evType] = fn;
        }
    };
    function 
    init(){
        
    addEvent($('rg'), 'keyup'ctrlIsNumeric);
    }
    addEvent(window,'load',init,false);
     
    </script>
    </head>
    <body>
    <input id="rg" type="text" value="" />
    </body> 
    </html> 

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    function gestoreEvento(id, evento, nomeFunzione) {
    if (element(id).addEventListener) { // Mozilloidi
    element(id).addEventListener(evento, nomeFunzione, false);
    } else if (element(id).attachEvent) { // M$
    element(id).attachEvent('on' + evento, nomeFunzione);
    }
    } // gestoreEvento

    Questa proprio cambiala non puoi passare
    ad esempio window e senza i return con Opera
    va in confusione
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.