Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    disabilitare tutti gli elementi di un contenitore tranne alcuni

    Ho un contenitore, tipicamente un div che contiene varii elementi, <label, <img, <a, <input, <select, <textarea.

    Vorrei, da codice javascript, disabilitare (non far partire il link, non fare scrivere dentro gli <input, non permettere la selezione dei <select...) tutti gli elementi del contenitore, tranne alcuni di id noto.

    Mi potreste aiutare?
    Pietro

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    esattamente cosa trovi difficile?
    ti butto giu un esempio
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    
    -->
    </style>
    <script language="JavaScript" type="text/javascript">
    <!--
    function disabilita(){
    	var rifdiv=document.getElementById('box')
    	var allTags=rifdiv.getElementsByTagName('*')
    	for(var k=0;k<allTags.length;k++){
    		var n=allTags[k].tagName.toLowerCase();
    		if(n=='input' || n=='select'){
    			if(allTags[k].id=="" || allTags[k].id.substr(0,7)!='no_dsb_'){
    				allTags[k].disabled=true;
    			}
    		}
    	}
    }
    //-->
    </script>
    </head>
    <body>
    disabilita
    <div id="box">
    <form>
    <input type="text" value="blabla"><input type="text" id="no_dsb_testo" value="blabla">
    
    <select>
    <option>a</option>
    <option>b</option>
    <option>c</option>
    </select>
    <select id="no_dsb_select">
    <option>a</option>
    <option>b</option>
    <option>c</option>
    </select>
    </form>
    </div>
    </body>
    </html>

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    esattamente cosa trovi difficile?
    ti butto giu un esempio
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    
    -->
    </style>
    <script language="JavaScript" type="text/javascript">
    <!--
    function disabilita(){
    	var rifdiv=document.getElementById('box')
    	var allTags=rifdiv.getElementsByTagName('*')
    	for(var k=0;k<allTags.length;k++){
    		var n=allTags[k].tagName.toLowerCase();
    		if(n=='input' || n=='select'){
    			if(allTags[k].id=="" || allTags[k].id.substr(0,7)!='no_dsb_'){
    				allTags[k].disabled=true;
    			}
    		}
    	}
    }
    //-->
    </script>
    </head>
    <body>
    disabilita
    <div id="box">
    <form>
    <input type="text" value="blabla"><input type="text" id="no_dsb_testo" value="blabla">
    
    <select>
    <option>a</option>
    <option>b</option>
    <option>c</option>
    </select>
    <select id="no_dsb_select">
    <option>a</option>
    <option>b</option>
    <option>c</option>
    </select>
    </form>
    </div>
    </body>
    </html>
    non dirmi che
    var allTags=rifdiv.getElementsByTagName('*')

    serve per cercare tutti gli elementi
    se è così non lo sapevo ed è quello che cercavo


    non sapendolo, ho fatto una funzione cher richiamava
    var allTags=rifdiv.getElementsByTagName('select')

    uno per select, uno per a, uno per textarea... e mi pareva strano che non ci fosse niente di meglio.


    ps. per chi ama IE e le sue stranezza

    per disabilitare i link ho scoperto che disabled funziona, ma solo se al link gli si dà uno stile typo position:absolute;top:..., left:xxx;


    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho provato e veramente mi hai aiutato:

    per chi servisse, mi sono adattato il codice di Xinod al mio caso:
    l'ho provato con IE e Firefox e mi sembra funzionare

    codice:
    function disabilita(id_contenitore, vettore_id_esclusi)
    {
    	if(vettore_id_esclusi == undefined) var vettore_id_esclusi = [];
    	
    	var v = document.getElementById(id_contenitore);
    	if(v == undefined) return;
    	
    	var elementi = v.getElementsByTagName("*");
    	var i;
    	for(i = 0; i < elementi.length; i++)
    	{
    		var elemento = elementi[i];
    		if(!trovato(vettore_id_esclusi, elemento.id) )
    		{
    
    			elemento.disabled = true;
    			elemento.readOnly = true;
    			elemento.onclick = function(){return false;};
    		}
    		
    	}
    	
    	
    	function trovato(vettore, elemento)
    	{
    		var i;
    		var t = false;
    		for(i = 0; i < vettore.length; i++)
    		{
    			if(vettore[i] == elemento)
    			{
    				t = true;
    				break;
    			}
    		}
    		return t;
    	}
    	
    		
    }
    Pietro

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.