PDA

View Full Version : html in javascript


bobosg
19-01-2012, 09:55
ciao a tutti, ho una domanda da farvi credo stupida, ma che mi sta facendo impazzire.

in php per visualizzare una parte di html dopo un controllo mi capita spesso di fare così


<?php if(controllo) { ?>
parte di html
<? } ?>


ora mi chiedevo se è possibile fare la stessa cosa con javascript e vi spiego anche per quale motivo.

o una form su cui faccio una verifica dei campi solo in javascript per cui se quest'ultimo è disabilitato non deve proprio essere visualizzata la form.
per questo avevo pensato che nel <noscript> mettevo il messaggio che se non hai javascript non puoi bla bla bla

se invece javascript è abilitato potrei valorizzare una variabile e quindi fare un controllo su questa per visualizzare la form.

ok, mi sono dilungato, sorry!
spero sia tutto chiaro comunque...

grazie a tutti!!!

wingman87
19-01-2012, 10:53
Potresti fare una cosa del genere:

document.getElementById('formContainer').innerHTML = formContent;

Dove formContainer è l'id dell'elemento in cui vuoi iniettare il form.

bobosg
19-01-2012, 11:16
Potresti fare una cosa del genere:

document.getElementById('formContainer').innerHTML = formContent;

Dove formContainer è l'id dell'elemento in cui vuoi iniettare il form.

ok,scusami ma in javascript non sono molto ferrato...quindi come gli pass il form a "formContent"?

bobosg
19-01-2012, 11:23
Potresti fare una cosa del genere:

document.getElementById('formContainer').innerHTML = formContent;

Dove formContainer è l'id dell'elemento in cui vuoi iniettare il form.


document.getElementById('formContainer').innerHTML = "<form>campi</form>";


una cosa del genere?

wingman87
19-01-2012, 13:02
Sì, formContent è l'HTML da iniettare

bobosg
19-01-2012, 13:47
Sì, formContent è l'HTML da iniettare

il problema è che nel form ho del codice javascript associato agli eventi onfocus e onblur, come lo scrivo?

bobosg
19-01-2012, 14:07
grazie comunque...

alla fine ho risolto con document.write

se javascript è disabilitato la form non uscirà proprio

Dan__88
19-01-2012, 15:27
una volta chiuso il tag di php ci puoi scrivere javascript proprio come fai con l'html

bobosg
19-01-2012, 15:30
una volta chiuso il tag di php ci puoi scrivere javascript proprio come fai con l'html
ti ringrazio per la risposta, ma non era questa la mia domanda

Dan__88
19-01-2012, 15:35
ti ringrazio per la risposta, ma non era questa la mia domanda

ho visto,
perdonami ho letto male :)

bobosg
19-01-2012, 15:41
ho visto,
perdonami ho letto male :)

nulla figurati ;)

comunque se qualcuno ha una soluzione migliore rispetto alla mia sarei felice di saperla, io dovevo risolvere velocemente il problema ma ora vorrei capire se è una soluzione "fatta bene"

wingman87
19-01-2012, 16:01
il problema è che nel form ho del codice javascript associato agli eventi onfocus e onblur, come lo scrivo?

Non ho capito il problema, in formContent scrivi l'html come lo scriveresti normalmente, compresi gli eventi onfocus e onblur.
Magari posta un po' di codice per capire meglio.

bobosg
19-01-2012, 16:12
ecco quello che faccio


<script type="text/javascript">
document.write("<form name=\"inscomment\" id=\"inscomment\" method=\"post\" class=\"form-js\"><input name=\"autore\" id=\"autore\" type=\"text\" size=\"20\" value=\"Autore\" onfocus=\"if(this.value==this.defaultValue)this.value=''\"><textarea name=\"testo\" id=\"testo\" cols=\"70\" rows=\"5\" onfocus=\"if(this.value==this.defaultValue)this.value=''\">Commenti...</textarea><input type=\"button\" value=\"Invia\" onClick=\"validateform()\"></form></div>");
</script>

wingman87
19-01-2012, 16:14
Ora che mi ci fai pensare forse il js iniettato in questo modo non funziona su tutti i browser, però si può sempre associare vari handler agli eventi dopo aver settato il contenuto del formContainer.
Esempio:

document.getElementById('formContainer').innerHTML = formContent;
document.getElementById('txtName').onfocus = onFocusHandler;

dove onFocusHandler è una funzione, ad esempio:

function onFocusHandler(e)
{
e.target.style.backgroundColor = "yellow";
}

bobosg
19-01-2012, 16:17
secondo te va bene come ho fatto io?
e qual è la differenza se invece lo fai con innerHTML?
grazie ancora

wingman87
19-01-2012, 16:26
La differenza principale è che con innerHTML puoi mettere lo script dove vuoi nella pagina o anche in uno script esterno, invece con document.write lo devi piazzare esattamente dove vuoi che venga iniettato il codice. Un'altra differenza è che con innerHTML puoi iniettare il codice anche in differita, non necessariamente quando viene caricata la pagina.

Secondo me comunque va bene come hai fatto...