lo so... è brutto... però funziona...
ho avuto il tuo stesso problema un po' di tempo fa...
ho provato a 'giocare' con il metodo watch() della superclasse Object... mi sembrava l'unica cosa adatta allo scopo...
come funziona: si assegna onload un 'controllore' al campo testo, ed ogni volta che viene modificata la proprietà 'value' (via JavaScript) dello stesso, viene richiamata la funzione associata, che 'decide il da farsi'.
L'unico inconveniente è che non sono riuscito ad evitare il pezzo (veramente osceno) 'this.value = this.value' comunque dato in pasto a mozilla funziona... (non dovrebbe dar problemi con netscape...)
codice:
<html>
<head>
<script language="javascript">
function sec()
{
var obj = document.forms['m_form'].elements['txt'];
if(!document.all)
obj.watch("value",
function (id,oldval,newval)
{
if(document.forms['m_form'].elements['chk'].checked)
return newval;
else
{
if(newval != "")
alert('checkbox non selezionata...');
return ""
}
}
)
}
function chk_control(b)
{
if(!b)
document.forms['m_form'].elements['txt'].value = '';
}
</script>
</head>
<body onload="sec()">
<form name="m_form">
<input type="checkbox" name="chk" onchange="chk_control(this.checked);">
<input type="text" name="txt" onchange="this.value = this.value" value="valore iniziale">
</form>
</body>
</html>
ciao