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