Jak mogę dodać readonlydo konkretnego <input>? .attr('readonly')nie działa.
Jak mogę dodać readonlydo konkretnego <input>? .attr('readonly')nie działa.
Odpowiedzi:
jQuery <1.9
$('#inputId').attr('readonly', true);
jQuery 1.9+
$('#inputId').prop('readonly', true);
Przeczytaj więcej o różnicy między rekwizytem a attr
Użyj $ .prop ()
$("#descrip").prop("readonly",true);
$("#descrip").prop("readonly",false);
$.prop(): Prop ustawi atrybut readonly na pusty / pusty ciąg, więc jeśli masz CSS, który używa selektora atrybutów [readonly="readonly"], musisz zmienić to na [readonly](lub dołączyć oba).
Readonly jest atrybutem zdefiniowanym w html, więc traktuj go jak jeden.
Musisz mieć coś takiego jak readonly = "readonly" w obiekcie, z którym pracujesz, jeśli nie chcesz, aby można go było edytować. A jeśli chcesz, aby można go było ponownie edytować, nie będziesz mieć czegoś takiego jak readonly = '' (to nie jest standard, jeśli dobrze zrozumiałem). Naprawdę musisz usunąć atrybut jako całość.
Jako taki, przy użyciu jquery dodawanie i usuwanie go ma sens.
Ustaw coś tylko do odczytu:
$("#someId").attr('readonly', 'readonly');
Usuń tylko do odczytu:
$("#someId").removeAttr('readonly');
To była jedyna alternatywa, która naprawdę dla mnie zadziałała. Mam nadzieję, że to pomoże!
.attr('readonly', 'readonly')powinien załatwić sprawę. Twój .attr('readonly')zwraca tylko wartość, nie ustawione.
.attrWartość powinna być tylko ciągiem lub numer, a nie logiczna, zgodnie z docs jQuery: api.jquery.com/attr/#attr2 Również HTML „boolean atrybuty” powinno być tylko pusty ciąg lub wartość atrybutu. Myślę, że rozwiązaniem jest .prop()uniknięcie zamieszania.
Myślę, że „wyłączone” wyklucza wysyłanie danych wejściowych przez POST
Aby włączyć tylko do odczytu:
$("#descrip").attr("readonly","true");
Do wyłączania tylko do odczytu
$("#descrip").attr("readonly","");
Użyj właściwości setAttribute. Zauważ w przykładzie, że jeśli wybierzesz 1, zastosuj atrybut tylko do odczytu w polu tekstowym, w przeciwnym razie usuń atrybut tylko do odczytu.
http://jsfiddle.net/baqxz7ym/2/
document.getElementById("box1").onchange = function(){
if(document.getElementById("box1").value == 1) {
document.getElementById("codigo").setAttribute("readonly", true);
} else {
document.getElementById("codigo").removeAttribute("readonly");
}
};
<input type="text" name="codigo" id="codigo"/>
<select id="box1">
<option value="0" >0</option>
<option value="1" >1</option>
<option value="2" >2</option>
</select>
Dla wersji jQuery <1.9:
$('#inputId').attr('disabled', true);
Dla wersji jQuery> = 1.9:
$('#inputId').prop('disabled', true);