:master: ho voluto provare anch'io perchè mi pare in fondo, interessante, seguendo però un aproccio diverso.

Ossia, il pulsante e la select lanciano tutte e due la procedura ShowHide.

Questa procedura, per sapere cosa fare, deve conoscere chi l'ha lanciata: o il pulsante o la select, nel nostro caso, e si comporta in conseguenza.

Perciò, la procedura viene lanciata aggiungendo il parametro event, come da esempio:

<button onclick="ShowHide(event, 'show1',********

e,
<select name="autore" id="autore" onchange="ShowHide(event, ****);">

la procedura, fa:
codice:
function ShowHide(e,id1,id2,id_se1) 
{
	//accedo all'oggetto event
	if(!e) var e = window.event;	
	
	var target = (e.target)?e.target:e.srcElement;
    if(target.tagName.toUpperCase() == "BUTTON" )
    {
        if(document.getElementById) 
        {
            el1 = document.getElementById(id1);
            el2 = document.getElementById(id2);
            se1 = document.getElementById(id_se1);
            if(el1.style.display == "none") 
            {
                el1.style.display = "block";
                el2.style.display = "none";
                se1.disabled = false;
            }
            else 
            {
                el1.style.display = "none";
                el2.style.display = "block";
                se1.disabled = true;
            }
        }
    }
    else if(target.tagName.toUpperCase() == "SELECT" )
    {
        var valore_select = target.value;
        document.getElementById("show1").disabled = valore_select != "";
    }
    
}
vedi se può essere utile