Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    aggiungere comportamenti dinamicamente

    Ciao, all'onload della pagina attacco delle azioni da eseguire dopo alcuni eventi (onfocus, onchange, onblur). Lo faccio perché ho moltissimi campi e non mi andava di scriverli a mano!

    Il codice in basso funziona, ma ho un piccolo problema. se il campo ha gia un onblur, quest'ultimo viene sovrascritto. come posso fare add'aggiungere il nuovo comportamento senza sovrascrivere quello hardcoded?
    codice:
    window.onload=function(){
    	//set onfocus, onblur and onchange properties for all inputs
    	var inputs=document.getElementsByTagName("input");
    	for (var i=0;i<inputs.length;i++){
    		if(inputs[i].type=='text')
    		{
    			inputs[i].onfocus = function(){getHelp('{doc_type}', this.name);this.className='field_focus';}
    			inputs[i].onchange = inputs[i].onkeyup;
    			inputs[i].onblur = function(){cleanHelp();this.className='field_normal';}
    		}
    	}
    }
    idee?
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    window.onload=function(){
    	//set onfocus, onblur and onchange properties for all inputs
    	var inputs=document.getElementsByTagName("input");
    	for (var i=0;i<inputs.length;i++){       
    		if(inputs[i].type=='text')
    		{
    			inputs[i].onfocus = function(){getHelp('{doc_type}', this.name);this.className='field_focus';}
    			inputs[i].onchange = inputs[i].onkeyup;
    
                            old_onblur = inputs[i].onblur;
    			inputs[i].onblur = function(){ if (old_onblur) old_onblur();cleanHelp();this.className='field_normal';}
    		}
    	}
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    Originariamente inviato da fcaldera
    codice:
    window.onload=function(){
    	//set onfocus, onblur and onchange properties for all inputs
    	var inputs=document.getElementsByTagName("input");
    	for (var i=0;i<inputs.length;i++){       
    		if(inputs[i].type=='text')
    		{
    			inputs[i].onfocus = function(){getHelp('{doc_type}', this.name);this.className='field_focus';}
    			inputs[i].onchange = inputs[i].onkeyup;
    
                            old_onblur = inputs[i].onblur;
    			inputs[i].onblur = function(){ if (old_onblur) old_onblur();cleanHelp();this.className='field_normal';}
    		}
    	}
    }
    grazie.. ma ho provato e non funziona. l'old_onblur é un semplice alert('ciaoo');
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    sicuro che le closures siano applicate correttamente? La funzione all'onload sei sicuro che funzioni correttamente?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ecco il codice completo (con la tua modifica)
    codice:
    window.onload=function(){
    	//set onfocus, onblur and onchange properties for all inputs
    	var inputs=document.getElementsByTagName("input");
    	for (var i=0;i<inputs.length;i++){
    		if(inputs[i].type=='text')
    		{
    			inputs[i].onfocus = function(){getHelp('{doc_type}', this.name);this.className='field_focus';}
    			inputs[i].onchange = inputs[i].onkeyup;
    			
    			old_onblur = inputs[i].onblur;
    			inputs[i].onblur = function(){ if (old_onblur) old_onblur();cleanHelp();this.className='field_normal';}
    		
    			//inputs[i].onblur = function(){cleanHelp();this.className='field_normal';}
    			
    			
    		}
    		else
    		{
    			inputs[i].className='others';
    		}
    	}
    	//set onfocus, onblur and onchange properties for all textareas
    	var inputs=document.getElementsByTagName("textarea");
    	for (var i=0;i<inputs.length;i++){
    		inputs[i].onfocus = function(){getHelp('jd', this.name);this.className='field_focus';}
    		inputs[i].onblur = function(){cleanHelp();this.className='field_normal';}
    		inputs[i].onchange = inputs[i].onkeyup;
    	}
    }
    ed ecco il field che ha gia un onblur:
    codice:
    <input type="text" name="ex_pos_holder_last_name" value="{ex_pos_holder_last_name}" onblur="alert('ciao');" size="15">
    per il momento funziona tutto, tranne l'alert('ciao'). non capisco il perché.. tu ci vedi qls di strano?
    alcool: la causa e la soluzione di tutti i problemi

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.