Come posso, mentre js esegue un ciclo che lo tiene impegnato per 5 secondi, fare apparire sulla pagina l'immagine della clessidra e poi fare tornale il cursore di default quando il ciclo è terminato?
Grazie
Come posso, mentre js esegue un ciclo che lo tiene impegnato per 5 secondi, fare apparire sulla pagina l'immagine della clessidra e poi fare tornale il cursore di default quando il ciclo è terminato?
Grazie
prima:
document.style.cursor = 'wait';
dopo:
document.style.cursor = 'auto';
Questo dovrebbe essere corretto se il puntatore sta nel document, ma il cursore non e` ereditato, per cui se il puntatore sta in un oggetto diverso non apparira` la clessidra.
Non sono sicurissimo su quella sintassi. Eventualmente prova anche:
document.getElementsByTagName('body')[0].style.cursor = ...
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Con document.style.cursor = 'wait';
mi da l'errore document.style non è un oggetto o è vuoto
provo con l'altro
Forse con lo script mi spiego meglio:
<script language="JavaScript1.2">
<!--
function ceck() {
var reg = document.forms['form1'].elements['categoria[]'];
var regg = 0;
for (var i=0; i<reg.length; i++) {
if(reg[i].checked) regg++; // conta il numero di checkbox settate
}
if(regg == 0) {
alert( 'Devi scegliere almeno una Categoria!' ) ;
return false;
} else {
document.forms['form1'].submit()
}
}
// -->
</script>
Quando invio il form si esegue ceck() e siccome iceckbox sono circa 8.000, ci vogliono un po' di secondi. Per questo vorrei la clessidra che poi sparisse alla pressione di OK della finestra alert()
Grazie
Usando document.getElementsByTagName('body')[0].style.cursor =wait
la clessidra appare solo quando clicco su OK della finestra alert() che mi appare dopo un po' di secondi. E' perfettamente l'opposto di ciò che voglio. Di più avendo cliccato su di un pulsante che ha lo style=cursor: hand mi rima ne sulla finestra la manina sino a quando non clicco su OK dell'alert() ed allora appare la clessidra. Non ci capisco nulla!!
Non e` che abbia capito molto.
Comunque i problemi potrebbero essere dati:
1. dall'errato inserimento della istruzione nel flusso del programma JS;
2. da una errata intepretazione del browser.
Prova a postare lo script come lo usi adesso, oppure (se ti e` possibile) lascia il link alla pagina.
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Lo script lo uso così:
<script language="JavaScript1.2">
<!--
function ceck() {
document.getElementsByTagName('body')[0].style.cursor = 'wait';
var reg = document.forms['form1'].elements['categoria[]'];
var regg = 0;
for (var i=0; i<reg.length; i++) {
if(reg[i].checked) regg++; // conta il numero di checkbox settate
}
if(regg == 0) {
alert( 'Devi scegliere almeno una Categoria!' ) ;
return false;
} else {
document.forms['form1'].submit()
}
}
// -->
</script>
Nella pagina ho 8.000 ceckbox di nome categoria[], ed un pulsante [img]../images/order.gif[/img]
che quindi manda la funzione che verifica se almeno uno dei ceckbox è stato spuntato.
A questo punto si visualizza la manina su qualunque parte del documento, dopo alcuni secondi se non ho scelto nessuna categoria appare la finestra di alert(), quando clicco su OK appare su tutto il documento la clessidra.
Mi spiace ma il lavoro è in locale per cui non posso mandarti il link. Spero di essermi spiegato.
Se invece scelgo una o più categorie, mi appare la manina su tutto il documento, quindi quando il ciclo finisce passa regolarmente alla pagina puntata per l'invio del form.
Mi scuso per la lunghezza del post.
Ma perche` forzi i bottoni a fare quello che non devono?
lo script:codice:<form ... onsubmit="return ceck(this);"> ... i tuoi checkbox ... <input type="image" src="../images/order.gif" style="width:81; height:36; border:0px;"> </form>Versione piu` veloce (ma dipende da dove trova la prima checkbox settata):codice:function ceck(ff) { document.getElementsByTagName('body')[0].style.cursor = 'wait'; var reg = ff.elements['categoria[]']; var regg = 0; for (var i=0; i<reg.length; i++) { if(reg[i].checked) regg++; // conta checkbox settate } if(regg == 0) { alert( 'Devi scegliere almeno una Categoria!' ) ; } document.getElementsByTagName('body')[0].style.cursor = 'auto'; return (regg != 0); }PS. quando ti ho fatto questo script, non sapevo che le checkbox fossero tante: di solito sono decine al massimo, e il tempo e` quindi comunque breve.codice:function ceck(ff) { document.getElementsByTagName('body')[0].style.cursor = 'wait'; var reg = ff.elements['categoria[]']; var regg = 0; for (var i=0; i<reg.length; i++) { if(reg[i].checked) { regg++; break; } } if(regg == 0) { alert( 'Devi scegliere almeno una Categoria!' ) ; } document.getElementsByTagName('body')[0].style.cursor = 'auto'; return (regg != 0); }
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Molto gentile ed accurato, grazie mille. Ho di nuovo imparato qualche cosa grazie ancora
Purtroppo sembra proprio che la clessidra non voglia comparire. Ho inserito il codice che mi hai postato, ma quando clicco sul bottone sul documento il cursore è a forma di manina sino a quando non compare la finestra di alert. Sembra che l'oggetto cursor non appartenga al document ma al img. Forse dovrò fare senza clessidra?
P.S. Mi ero sbagliato sul numero delle ceckbox, sono 1080 e no 8000 come ti avevo scritto prima