Newsgroup: it.comp.lang.javascript
Titolo: Assegnazione valore ad un oggetto INPUT

Ciao a tutti!!!
ho un problema in questo script:
<input id="PageNumber" type="hidden" runat="server" value="1" />
<script type="text/javascript" language="javascript">
    function ChangePage(id)
    {
        // save the page number clicked to the hidden field
        document.all.PageNumber.value = id;
        // call the __doPostBack function to post back
        // the form and execute the PageClick event
        __doPostBack('PageClick','');
    }
</script>
non mi funziona questa riga di codice:
document.all.PageNumber.value = id;
non mi trova l'oggetto PageNumber nel documento... perche'???
Come faccio per ritrovarlo???
io voglio solo assegnargli il valore ID...
come si fa???
qualcuno mi puo' aiutare???
Grazie....
Luca

         document.all.PageNumber.value = id;
argh...sei consapevole che questo orrore funziona solo con IE?
A parte questo non vedo errori (non hai indicato come la chiami questa
function,però). Attenzione anche a "id" che è riservato, come ulteriore
prova cambierei nome al parametro.
Altro: non è che sei in uno UserControl (il quale splendidamente ti cambia
l'id assegnato aggiungendo un suffisso cosiddetto "a cazzo")?
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

Guarda... io dovevo fare il paging in una WebForm e ho trovato questo
script:
http://www.codeproject.com/aspnet/custompaging.asp?target=custom%7Cpaging
funziona tutto... a parte quella FUNCTION... che ti ho scritto sopra...
ho fatto un po' di prove...
cosa mi consigli???
C'e' un'altra soluzione???
a me serve una funzione simile...
Luca

 qualcuno mi puo' aiutare???
Creo che ti si sia impiantato il tasto del punto di domanda, ne appaiono
sempre tre :P
BTW, cambia "all.PageNumber" con "getElementById('PageNumber')". Per il
resto il codice mi sembra corretto (nota: "Cristia' id non è riservato").
(*1) runat non è un attributo di <input />, language è un attributo valido
solo nelle DTD transitional.
Ro!

Grazie... Ho provato ma non funziona neanche cosi'...
altre idee???
Luca

 (*1) runat non č un attributo di <input />
Quello viene eliminato da .net, credo. Il quale, in piů, aggiunge
l'attributo "name" con valore pari a quello imposto per l'attributo id.
Insomma, ho fatto una prova e 
<input name="prova_name" id="prova" value="prova" type="text"
runat="server" />
diventa
<input name="prova" type="text" id="prova" value="prova" />
Meraviglia!
-- 
Nando [?]
Apostolo della Prova

 altre idee???
Tanto per provare... quando la tua pagina viene visualizzata nel browser,
guarda il sorgente HTML (Pulsante dx del mouse nella pagina -> HTML),
individua il campo input che ti dà problemi e verifica che valori ha per
gli attributi "name" e "id".


In data 15 Feb 2006 08:55:58 -0800, LukE ha scritto:
Quello che hai postato è ciò che leggi nella pagina html? non credo: quel
runat="server" indica che hai copiaincollato il sorgente aspx (e
runat="server" non dovrebbe comparire client-side)...e allora ti richiedo:
sicuro di non essere in uno user control? Hai guardato *IL SORGENTE* della
pagina html per vedere che id sta assegnando all'input?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 Insomma, ho fatto una prova e
Hai perfettamente ragione, ci ho smanettato troppo poco con 
asp.net
 (e .net
in generale) per ricordarmelo.
Ro!

 Meraviglia!
e sei fortunello perché hai provato in un aspx e non in un ascx...prova in
un ascx che č ancora piů meraviglia!!
-- 
"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.

 un ascx che č ancora piů meraviglia!!
Non conosco asp.net... manco so cosa sia un ascx :)
ActiveServerControl? Boh... Informerommi.


 Hai perfettamente ragione, ci ho smanettato troppo poco con 
asp.net
Perché, secondo te io ci smanetto? :)


allora ho fatto come hai detto tu...
name="ctl00$ContentPlaceHolder1$PageNumber"
id="ctl00_ContentPlaceHolder1_PageNumber"
ora???

 ha scritto:

E ora hai capito perché non ti funziona :)
Scherzi a parte, non lo so. Non credo sia possibile a priori conoscere
quale stringa verrà appiccicata ai valori di quegli attributi (name e id).
Devi trovare un modo diverso di individuare l'oggetto... il "come" dipende
anche da come è strutturata la tua pagina.




ARGH! sei in un UC, ti ha sovrascritto l'ID "a cazzo" ed è pure bacato
(1.0, mi pare). Quindi capisci anche te che client-side non esiste
l'oggetto "PageNumber" ma esiste un oggetto con questo orrendo id.
A questo punto: 
 a) derivi il tuo input così da mantere l'id (io lavoro così...all'inizio
mi sono fatto la mia libreria sovrascrivendo tutti gli oggetti input,
select etc per mantenere l'id e altre cosette)
 b) costruisci tutto lo script server-side usando, anziché id, ClientID.
Sei in entrambi i casi OT.
p.s. togli quell'orrore di document.all per favore, usa getElementById come
ti hanno detto oppure, se ti serve per forza compatibilità con IE4, usa
questa function per recuperare l'oggetto:
 
http://www.criosoftware.it/default14.aspx
-- 
"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.

 anche da come è strutturata la tua pagina.
server-side la hai con ClientID; quindi devi passare questo clientId in
qualche modo alla pagina: o in una var globale, oppure costruendo l'intero
script server-side (oppure sovrascrivendo questo orrore di M$).
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

Grazie... ora ho capito... adesso ci provo... se ho altri problemi...
scrivero' ancora nel forum...
Luca

 script server-side (oppure sovrascrivendo questo orrore di M$).
Cercherò uno spazietto nella mia memoria per ricordare queste
informazioni... ma temo che sfuggiranno presto!
Ma servono davvero questi user-control o come cippa si chiamano? Vabbuò,
sono schifosamente OT, fai finta che non abbia detto niente :)


 sono schifosamente OT, fai finta che non abbia detto niente :)
sě, sono il cuore di tutto, senza la distinzione con asp diventa abbastanza
inconsistente...
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

> Perché, secondo te io ci smanetto? :)
Io ho dato un'occhiata un po' a C#, ma giusto un'occhiata. Siamo in due
quindi :)
Ro!

 un ascx che č ancora piů meraviglia!!
e gia', cosa succederebbe? ^_^ ora diccelo che' siamo curiosi!
/me che non ha MAI provato ASP/ASP.net
-- 
I veri polli sono i consumatori, e la loro malattia si chiama ignoranza.

 /me che non ha MAI provato ASP/ASP.net
leggi sopra la risposta di Luke che è autoesplicativa:
name="ctl00$ContentPlaceHolder1$PageNumber"
id="ctl00_ContentPlaceHolder1_PageNumber"


 quindi :)
ecco, ancora ancora il C# lo capisco, magari in un'ottica multipiattaforma
Mono/.net (anche se sarebbe meglio apprendere l'IL)


 Mono/.net (anche se sarebbe meglio apprendere l'IL)
Sì in un'ottica multipiattaforma potrebbe iniziare a fare concorrenza a
Java, ma scendere di livello a studiarsi IL mi sembra un po' eccessivo.
Ro!

 scendere di livello a studiarsi IL mi sembra un po' eccessivo.
la mia era volutamente una provocazione :)


 I veri polli sono i consumatori, e la loro malattia si chiama ignoranza.
Sono d'accordissimo, per ordine medico posso mangiarne solo una volta a
settimana, ma esula dal resto, si sta mandando in crisi un intero settore
economico e si può solo immaginare il crollo dell'indotto. Ma siamo straOT.
Ro!

Ciao... volevo chiederti solo un'ultima cosa...
ma se io scrivessi una cosa del genere???
<script type="text/javascript" language="javascript">
    function ChangePage(page)
    {
    document.getElementById(ctl00_ContentPlaceHolder1_PageNumber).value
= page;
    __doPostBack('PageClick','');
    }
</script>
in questo modo non dovrebbe trovarmi il mio oggetto???

 = page;
non è una variabile, è un id (quindi va messo tra virgolette, 'ctl00...').
il problema è che temo non sia garantito il prefisso, cioé, basta che nella
pagina aggiungi o togli un UC e potrebbe cambiare, così come potrebbe
cambiare installando qualche patch.


Hai ragione... non potrebbe funzionare sempre... pero' non ho capito
come fare per farmi restituire l'ID corretto.
comunque ho provato ad inserirgli quell'obbrobrio di ID e funziona!!!!
ora mi manca solo una cosa...ti spiego:
<asp:button ID="PageClick" OnClick="Page_Click" runat="server"
Visible="false"></asp:button>
nel mio WebForm ho pure questo pulsante invisibile... ora che mi trova
il mio oggetto INPUT sono a cavallo... pero' perche' usando questo
script non mi esegue l'OnClick del pulsante????
__doPostBack('PageClick','');
io alla fine voglio far eseguire l'OnClick del pulsante invisibile
premendo su un HyperLink...
dove sbaglio???

 Visible="false"></asp:button>
Sì, ma devi chiedere nel newsgroup di 
asp.net
, qua sei OT ... comunque sia
Visible="false" non significa che viene inviato al browser ma nascosto,
significa che è proprio disabilitato il rendering (e quindi *NON* viene
inviato al client). Togli il Visibile="false", nel caso tu voglia non farlo
vedere client-side mettigli un className e imposta nella classe
display:none.
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

Ti ringrazio... ora allora ci provo...
Luca