Come posso usare jQuery per effettuare un input in sola lettura?


142

Ho il seguente input:

  <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname"/>

Come posso usare jQuery per rendere questo elemento un input di sola lettura senza cambiare l'elemento o il suo valore?

Risposte:


255

In questi giorni con jQuery 1.6.1 o versioni successive si consiglia di utilizzare .prop () durante l'impostazione di attributi / proprietà booleane.

$("#fieldName").prop("readonly", true);

89

aggiungi semplicemente il seguente attributo

// for disabled i.e. cannot highlight value or change
disabled="disabled"

// for readonly i.e. can highlight value but not change
readonly="readonly"

jQuery per apportare la modifica all'elemento (sostituto disabledper readonlyin seguito per l'impostazione readonlyattributo).

$('#fieldName').attr("disabled","disabled") 

o

$('#fieldName').attr("disabled", true) 

NOTA: A partire da jQuery 1.6, si consiglia di utilizzare .prop()anziché .attr(). Il codice sopra funzionerà esattamente lo stesso tranne che .attr()per il sostituto .prop().


4
disabilitare un campo non equivale a renderlo non modificabile, giusto? disabilitandolo non verrà inviato
Dave

2
@Dave corretto. Anche gli input di sola lettura possono essere focalizzati, gli input disabilitati no
Russ Cam

74

Per effettuare un input in sola lettura utilizzare:

 $("#fieldName").attr('readonly','readonly');

per farlo leggere / scrivere usa:

$("#fieldName").removeAttr('readonly');

l'aggiunta disableddell'attributo non invierà il valore con post.


7

Puoi farlo semplicemente marcandolo disabledo enabled. Puoi usare questo codice per fare questo:

//for disable
$('#fieldName').prop('disabled', true);

//for enable 
$('#fieldName').prop('disabled', false);

o

$ ('# fieldName'). prop ('readonly', true);

$ ('# fieldName'). prop ('readonly', false);

--- È meglio usare prop invece di attr.


7
Gli input disabilitati non vengono inviati sul modulo post / get.
Nielsvh,

4

Utilizzare questo esempio per rendere la casella di testo ReadOnly o Not.

<input type="textbox" class="txt" id="txt"/>
<input type="button" class="Btn_readOnly" value="Readonly" />
<input type="button" class="Btn_notreadOnly" value="Not Readonly" />

<script>

    $(document).ready(function(){
       ('.Btn_readOnly').click(function(){
           $("#txt").prop("readonly", true);
       });

       ('.Btn_notreadOnly').click(function(){
           $("#txt").prop("readonly", false);
       });
    });

</script>

3

Esistono due attributi, vale a dire readonlye disabled, che possono rendere un input di sola lettura. Ma c'è una piccola differenza tra loro.

<input type="text" readonly />
<input type="text" disabled />
  • L' readonlyattributo rende il testo di input disabilitato e gli utenti non possono più modificarlo.
  • L' disabledattributo non solo renderà il tuo testo di input disabilitato (immutabile), ma non potrà nemmeno essere inviato .

Approccio jQuery (1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

Approccio jQuery (2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

Approccio JavaScript:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS propintrodotto con jQuery 1.6.


0

Dato -

<input name="foo" type="text" value="foo" readonly />

funziona - (jquery 1.7.1)

$('input[name="foo"]').prop('readonly', true);

testato con readonly e readOnly - entrambi hanno funzionato.


-1

Forse usa l'attributo disabilitato:

<input disabled="disabled" id="fieldName" name="fieldName" type="text" class="text_box" />

O semplicemente usa il tag label:;)

<label>

1
La domanda diceva "Con jQuery" (il che implica che dovrebbe essere fatto in modo dinamico) e "sola lettura" (che è diverso da disabilitato).
Quentin,

-1
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
    <title></title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>
<body>
    <div>
        <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname" />
    </div>
</body>

<script type="text/javascript">
    $(function()
    {
        $('#fieldName').attr('disabled', 'disabled');

    });
</script>
</html>

-1

Forse è significativo aggiungere anche quello

$('#fieldName').prop('readonly',false);

può essere utilizzato come opzione di attivazione / disattivazione.


Ho provato questo con jQuery 3.3.1 e aggiunge semplicemente un readonlyattributo all'elemento, indipendentemente dal valore passato. Quindi il tuo esempio finirebbe per rendere il campo di input di sola lettura, nonostante apparentemente impostando il valore su false.
TMN

-1

In JQuery 1.12.1, la mia applicazione utilizza il codice:

$('"#raisepay_id"')[0].readOnly=true;

$('"#raisepay_id"')[0].readOnly=false;

e funziona.


-2

SetReadOnly (stato) è molto utile per i moduli, possiamo impostare qualsiasi campo su setReadOnly (stato) direttamente o da varie condizioni.Ma preferisco usare readOnly per impostare l'opacità sul selettore, altrimenti anche attr = 'disabled' funzionava come il stessa strada.

readSolo esempi:

$('input').setReadOnly(true);

o attraverso le varie codifiche come

var same = this.checked;
$('input').setReadOnly(same);

qui stiamo usando il valore booleano dello stato per impostare e rimuovere l'attributo readonly dall'input in base a un clic della casella di controllo.


gli esempi sopra non funzionano - setReadOnly non è una funzione integrata in jquery o in qualsiasi browser
Dave B 84

-3

In html

$('#raisepay_id').attr("readonly", true) 

$("#raisepay_id").prop("readonly",true);

nel bootstrap

$('#raisepay_id').attr("disabled", true) 

$("#raisepay_id").prop("disabled",true);

JQuery è una libreria in evoluzione e talvolta apportano miglioramenti regolari. .attr () viene utilizzato per ottenere gli attributi dai tag HTML e, sebbene sia perfettamente funzionale, .prop () è stato aggiunto in seguito per essere più semantico e funziona meglio con attributi senza valore come "controllato" e "selezionato".

Si consiglia di utilizzare .prop () se si utilizza una versione successiva di JQuery ogni volta che è possibile.


2
L'ho votato perché non ha senso. È tutto HTML, JavaScript e Bootstrap utilizza jQuery quindi questo fatto non è nemmeno rilevante. Inoltre, disabilitati e di sola lettura sono due cose diverse che funzionano indipendentemente dal fatto che Bootstrap sia usato o meno.
simontemplar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.