Funzione disabilita submit con checkbox privacy.

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Ho trovato una funzione che mi permette di disabilitare il pulsante di invio di un form fino a quando il check privacy non è impostato su "checked". Se c'è un solo check all'inteno di una pagina funziona egregiamente.. Il problema arriva quando ce ne sono due di form nella stessa pagina, perchè funziona solo il primo.
Vi lascio qui la funzione..
Codice:
<script language="javascript">
		function cambiaStato (chkItem){
		if($(chkItem).attr("checked"))
		$("#submitButton").removeAttr("disabled").removeClass( "nopuntatore" );
		else
		$("#submitButton").attr("disabled","true").addClass( "nopuntatore" );
		}
	</script>

<input id="mioid" class="miaclasse" name="accetto" type="checkbox" onclick="cambiaStato(this);">
<input class="button nopuntatore" id="submitButton" type="submit" name="suggerisci" value="Invia" disabled="true">

2 Domande...
1) Como posso gestire due checkbox o più di due utilizzando sempre la stessa funzione senza che interferiscano tra loro?
2) "(chkItem)" Sarebbe il parametro della funzione? Ecco perchè nel richiamare la funzione si utilizza onclick="cambiaStato(this);"? This sta per "questo" ma " this " cosa rappresenta e quando può essere usato?
 
Ciao,
1)
a me non funziona nemmeno con una sola checkbox
meglio scrivere cosi
Codice:
if($(chkItem).is(":checked"))
2)
this è un puntatore all'elemento che stai passando, nel tuo caso un input, in jquery per riferirsi ad un elemento specifico lo si racchiude tra il dollaro e le parentesi $()
Es
Codice:
$(".miaclasse").
si riferisce a tutti gli elementi che hanno classe = a miaclasse
Codice:
$("#mioid").
si riferisce all'ìelemento che ha come id mioid
Codice:
$("p").
si riferisce a tutti i tag <p>
 
Ti ringrazio per la gentile spiegazione. Il selettore avevo capito qual'era, avevo letto qualcosa in proposito, difatti la parte di aggiungiclasse e rimuovi classe l'ho aggiunta io. Era il this il problema, ma grazie alla tua spiegazione ora è chiaro..
Per quanto riguarda il funzionamento a me il singolo mi funziona, ma in coppia no.. Chissà xchè..
 
Funziona alla stessa maniera se faccio come dici tu.. Questo è veramente un mistero...
Qualcuno riesce a capire il perchè?? Dovrebbe funzionare su tutti e due?
Dovrei forse cambiare quel "(chkItem)" che non so neanche cosa sia?? Cercando a questo punto di sostituire il selettore con qualcosa di più preciso boo..
Grazie
 
Ultima modifica:
Non erano solo i due punti che avevo aggiunto : ho cambiato anche la funzione attr() con is()
a me cosi funziona
HTML:
<script language="javascript">
            function cambiaStato(chkItem) {
                if ($(chkItem).is(":checked"))
                    $("#submitButton").removeAttr("disabled").removeClass("nopuntatore");
                else
                    $("#submitButton").attr("disabled", "true").addClass("nopuntatore");
            }
        </script>
<input class="miaclasse" name="altro" type="checkbox"/>
    <input id="mioid" class="miaclasse" name="accetto" type="checkbox" onclick="cambiaStato(this);"/>
    <input class="button nopuntatore" id="submitButton" type="submit" name="suggerisci" value="Invia" disabled="true">
 
Sto tentando e ritentando.. ma nulla.. Ho provato anche a selezionarli in modo diverso.. tramite il name diverso ma nulla..
Se volessi fare due funzioni identiche che si riferiscono a due checkbox diversi dite che funzionerebbe?

E se si come dovrei farle? Come sostituisco quel "this" di cambiaStato(this)?
E come sostituisco "chkItem"?? Che ancora non ho capito cosa rappresenta :P

Ci sarà un metodo per farli convivere :crying: Grazie..
 
Mi sa che non ho capito cosa vuoi fare.
Un checkbox abilita/disabilita il submit, l'altro cosa deve fare ?
Riposta il codice che hai scritto compreso l'html
 
In pratica ho due checkbox nella pagina, ognuno dei quali dovrebbe abilitare un pulsante ( e solo quello )..
Sono per la verità due form in un tab.. Quindi risiedono effettivamente sulla stessa pag.
Per ora ho temporaneamente risolto così:
Codice:
    <!-- Funzione check -->
	<script language="javascript">
		function cambiaStato (chkItem){
		if($(chkItem).is(":checked"))
		$("#submitButton").removeAttr("disabled").removeClass( "nopuntatore" );
		else
		$("#submitButton").attr("disabled","true").addClass( "nopuntatore" );
		}
	</script>
    <script language="javascript">
		function cambiaStato2 (chkItem){
		if($(chkItem).is(":checked"))
		$("#submitButton2").removeAttr("disabled").removeClass( "nopuntatore2" );
		else
		$("#submitButton2").attr("disabled","true").addClass( "nopuntatore2" );
		}
	</script>

Se avete idee migliori rimango in attesa :P
Grazie e buon fine settimana.
 

Discussioni simili