2012-01-27 7 views
9

Ho questo semplice codice jQuery da testare.Come posso disabilitare il campo di testo HTML usando questo semplice jQuery?

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
      $("text").attr("disabled",""); 
     }); 
    }); 
</script> 
</head> 
<body> 
<input type="text"> 
<br /> 
<button>Set the textfield disabled</button> 
</body> 
</html> 

Fondamentalmente la pagina HTML viene fornita con un semplice pulsante e campo di testo. Tutto ciò che voglio è disabilitare il campo di input mentre faccio clic sul pulsante. Ma non funziona ???

(PS: questo codice proviene dal sito web w3schools.com, proprio per testare semplicemente come potente jQuery è).

+0

Questo spiega perché W3School non è apprezzato qui. l'HTML non è valido. guarda l'elemento di testo ... – gdoron

+0

@gdoron: Cosa c'è che non va con l'elemento ''? Non è chiuso correttamente? Non è valido in HTML5? '' Gli elementi 'non hanno mai contenuto, quindi non è ambiguo. – mpen

+0

@ Mark. Guarda la mia risposta. Dovrebbe essere con chiusura automatica '' come ogni elemento XML. – gdoron

risposta

11

Da jQuery 1.7, è possibile utilizzare .prop:

$(document).ready(function(){ 
    $("button").click(function(){ 
     $(":text").prop("disabled", true); 
    }); 
}); 

Prima 1.7, si potrebbe fare:

$(document).ready(function(){ 
    $("button").click(function(){ 
     $(":text").attr("disabled", true); 
    }); 
}); 

PS: Usa $(":text") o $('input[type="text"]') per selezionare tutti gli elementi di tipo testo.

+0

$ ('testo') non è un selettore valido! – devnull69

+0

.attr funziona anche su jQuery 1.7+. – gabitzish

+0

@ devnull69 Sì, hai ragione, non l'ho notato. – xdazz

0

$ ("input") attr ("disabile", "disabile");

+0

Ciò disabiliterà i pulsanti e ogni altro input che ha sulla pagina ... – gdoron

-1

"disabled" è una proprietà, non un attributo per-se. Booleans come "checked" o "disabled" non vengono sempre aggiornati (o recuperati) correttamente quando li accedono in quel modo. Utilizzare

$(':text').prop('disabled',true); 

invece.

+0

$ ('testo') non è un selettore valido! – devnull69

+0

@ devnull69: Il mio male. Pensavo che ci fosse qualcosa in contrario. ': text' è però. Aggiornato. Credo di aver capito che avrebbe controllato se il selettore corrispondesse a qualsiasi elemento. – mpen

1

o (più moderna):

$("input[type=text]").prop('disabled', true); 
2

Prova questa:

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){  
$("button").click(function(){   
$("#text").attr("disabled","true");  
}); 
}); 
</script> 
</head> 
<body> 
<input id="text" type="text"> 
<br /> 
<button>Set the textfield disabled</button> 
</body> 
</html> 
+0

@ devnull69- L'ho controllato e funziona benissimo !!! –

+0

@gdoron Tapas ha anche modificato l'HTML sotto – devnull69

+0

@ devnull69. Ma l'ho nascosto con un rientro scadente ... =) – gdoron

1

Non c'è text selettore nella jquery. È necessario utilizzare il selettore di attributo [attribute=value]

$('input[type=text]').prop('disabled', true); // prop Works on jquery 1.7+ 

o:

$('input[type=text]').attr('disabled', 'disabled'); // Works in each version. 
                // But isn't W3C standard. 

c'è un selettore :text ma è meno efficiente quindi la prima opzione, vedere la docs:

$ (': text') equivale a $ ('[tipo = testo]') e quindi selezionare s tutti gli elementi. Come con altri selettori di pseudo-classe (quelli che iniziano con un ":") si consiglia di precederlo con un nome di tag o qualche altro selettore; in caso contrario, il selettore universale ("") è implicito. In altre parole, $ (': text') è equivalente a $ (': text'), quindi dovrebbe essere usato $ ('input: text').

Note aggiuntive: Perché : testo è un'estensione jQuery e non fa parte del specifica CSS, query utilizzando: il testo non può usufruire della l'incremento delle prestazioni fornite dal metodo nativo DOM querySelectorAll() . Per prestazioni migliori nei browser moderni, utilizza [type = "text"] .

Nota che il tuo XHTML non è valido. Dovresti chiudere lo <input type="text"> =><input type="text" />

+0

Sì. Questo è probabilmente il motivo. – awongCM

+0

@ AW-GWTF899. Quindi dovresti accettare la risposta ... ** =) ** – gdoron

Problemi correlati