Newsgroup: it.comp.lang.javascript
Titolo: disabilitare un button senza form.

Dunque ho un input type='button' che non č contenuto in un form, definito in 
questo modo:
<input type='button' id='Invia' name='Invia' value='Invia' 
onClick='Invia()'>
All'inizio della pagina ho una funzione che, se verificata una certa 
condizione, dovrebbe disabilitarmi il button per impedirne l'utilizzo.
Ho provato con:
document.Invia.disabled="disabled";
ed anche
document.Invia.disabled=true;
Ma nessuno dei due va.
La consolle degli errori di FF mi dice: document,Invia has non 
proprieties....
Come fare?!?!

 Come fare?!?!
http://www.criosoftware.it/default14.aspx
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 sai che non č negli standard, vero? 
Cosa, il fatto che non sia contenuto in un form? E perché, scusa?
-- 
~ Ci si aspetta di tutto, ma non si e' mai preparati a nulla.
(M.Swetchine)

 onClick='Invia()'>
Mai usare stesso valore per name e id, l'avremmo detto un godziliardo
di volte. Primo, hanno significati diversi (un name può non essere un
valore univoco, un id deve esserlo), secondo perché in alcuni browser
(qualcuno ha detto IE?) puoi avere dei problemi di cui non ti accorgi
se non quando è troppo tardi. Ergo, dato che il name mi pare anche un
po' superfluo in questo caso, puoi fare:
	<input type="button" id="btn-invia" value="Invia" />
Per recuperarne il riferimento, puoi farlo in mille modi, dato che si
ha un id il più immediato è:
	document.getElementById("btn-invia").disabled = true;
-- 
~ "Io rispetto molto la stupidità umana.
E' la sola cosa che mi dia un'idea dell'eternità."
(Voltaire)


A parte l'identità nome-id (lo script non è mio ;-) ) era quello che pensavo 
anche io, avevo già provato ma in questo modo non va. :-(
Grazie comunque. 

 anche io, avevo già provato ma in questo modo non va. :-(
"non va" e "non funziona" in informatica non vogliono dire un tubaccio
nulla :) Si ha sempre un risultato, anche se non è quello desiderato.
Il codice da usare è quello lì, non ne scampi. O c'è un altro errore a
monte, oppure hai l'HTML completamente sballato (ad esempio hai più di
un controllo con lo stesso ID e come ti ho detto DEVE essere univoco).
L'error console di FF cosa ti dice in quel caso?
-- 
~ Non sono disordinato. Sono solo un massimizzatore di entropia.

 L'error console di FF cosa ti dice in quel caso?
La consolle degli errori di FF mi dice: 
document.getElementById("btInvia")has non proprieties 

 Cosa, il fatto che non sia contenuto in un form? E perché, scusa?
così, perché mi aggrada ... :-) 
ricordavo male, però ne ho approfittato per un ripasso (
http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Forms
)
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 secondo perché in alcuni browser (qualcuno ha detto IE?) 
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&ReleaseId=571
4. By Popular Demand: Other DOM Fixes document.getElementById(id) 
In Internet Explorer 7, this method searches for and returns the first
element that has an ID attribute or name attribute that case-insensitively
matches the parameter string. (Note: MSDN does not include information on
case-sensitivity.) 
In Internet Explorer 8, this method finds only elements that have ID
attributes that match the given parameter value in a case-sensitive manner.
(ID attributes should be interpreted as case-sensitive as per the HTML 4.01
specification).
Example: 
<input name="example"></input> <div id="example">...</div>
...
var whichElement = document.getElementById("example"); 
// This will return "INPUT" in IE7, "DIV" on other browsers. 
alert(whichElement.tagName);
Ma ROTFL !!
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 document.getElementById("btInvia")has non proprieties 
Significa che nel momento in cui viene eseguito quell'istruzione, non è
presente nel DOM della pagina alcun elemento con ID pari a "btInvia", è
molto semplice.
Quindi, o hai il codice HTML differente da quello che pensi, oppure vai
a recuperare il riferimento "btnInvia" quando ancora questo non è stato
parserizzato dal browser e aggiunto al document tree. Un esempio:
<script type="text/javascript">
        alert( document.getElementById("btnInvia") );
</script>
<input type="text" id="btnInvia" />
<script type="text/javascript">
        alert( document.getElementById("btnInvia") );
</script>
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."