2010-02-06 9 views
5

con jQuery, sto cercando di disattivare un campo di input in questo modo:Come è possibile disabilitare un tipo di input = "image" usando jquery?

<input id="submit" type="image" src="submit.jpg"> 

Quello che vorrei fare è disattivare il pulsante e cambiare l'immagine con un'immagine diversa (submitGreyed.jpg) per notificare visivamente quel pulsante è disabilitato.

Con la seguente riga a disattivare il tasto:

JQuery("#submit").attr('disabled','true'); 

allora posso cambiare l'immagine con:

JQuery("#submit").attr('src','submitGreyed.jpg'); 

e una volta disabilitato mi inviate il formulario con:

JQuery("#form").submit(); 

La seconda riga ha un comportamento strano; a volte funziona e talvolta no.

Quando funziona, il pulsante è disabilitato, l'immagine è cambiata e il modulo è inviato; quando non funziona, il pulsante è disabilitato, il modulo viene inviato ma l'immagine non viene modificata.

Come posso risolvere questo?

+1

In che modo a volte non funziona? Vuoi dire che si rompe in alcuni browser? – Matchu

+0

sì, non funziona con Firefox 3.5.7 e Safari. Quando l'immagine appare per la prima volta, inizia a funzionare. Ma, quando chiudo e riapro il browser, non funziona di nuovo. – systempuntoout

+1

Le virgolette sono sbilanciate tra virgolette doppie e virgolette singole. #form manca completamente la citazione finale – user113716

risposta

9

Questo non risponde alla tua domanda esattamente, ma spero che aiuta:

In primo luogo, dovrebbe essere disabled="disabled" in modo da utilizzare questo:

jQuery("#submit").attr('disabled','disabled'); 

E io non sono sicuro di quello che il pulsante grigio sembra, ma si potrebbe provare semplicemente utilizzando l'opacità:

jQuery("#submit").attr('disabled','disabled').css('opacity',0.5); 

aggiornamento non ho potuto replicare il problema, ecco è il mio suggerimento:

utilizzare un percorso assoluto per l'immagine invece di un parente uno, e impostare entrambi gli attributi allo stesso tempo (anche se l'impostazione uno dopo l'altro non ha cambiato la mia prova):

jQuery("#submit").attr({ 
    disabled: 'disabled', 
    src:  '/images/submitGreyed.jpg' 
}); 

Dal mio test ho usato un percorso completo, che potrebbe averlo influenzato un po '.

View a demo here

+1

'Disable: true' funziona anche tramite jQuerry. Non sono sicuro che sia il browser o jQuery che lo accetta. Probabilmente il browser vede l'attributo con qualsiasi valore. – alex

Problemi correlati