div readonly en CSS ou JavaScript

j'ai besoin de faire de " lecture seule div' en utilisant CSS ou JavaScript ou Jquery. Pas seulement des textos et tout. div. Cette div contient n'importe quoi(image, ,autre div,text-box,...)

cela devrait être pris en charge par tous les navigateurs.

une idée?

22
demandé sur KarSho 2013-03-20 09:34:05

5 réponses

Vous pouvez utiliser pointer-events: none; pour désactiver la souris DOM interaction (comme cliquer, pointer, etc). exemple:

div {
    pointer-events: none;
}
<div>
    <input type="text" value="value" />
    <br />
    <textarea>value</textarea>
</div>

Cependant nous pouvons encore faire le curseur pour se concentrer sur le input balise, même si pointer-events: none; appliqué là, et il fera l'utilisateur capable d'éditer la valeur. Essayez de cliquer sur input balise, puis appuyez sur onglet au clavier, alors le curseur se focalisera sur la balise elle-même, et on pourra l'éditer.

faire input balise non modifiable, mettre readonly attribut directement sur l'étiquette ou en utilisant jQuery. Ci-dessous est un exemple simple sur la façon de le faire en utilisant jQuery .prop().

$("input, textarea").prop("readonly", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type="text" value="value" />
  <br />
  <textarea>value</textarea>
</div>
41
répondu Noval Agung Prayogo 2017-04-20 06:52:25

vous ne pouvez pas faire cela avec CSS malheureusement, vous êtes après le readonly attribut sur les éléments HTML. Vous pouvez assez facilement accomplir ce que vous voulez en utilisant JavaScript, voici un exemple avec jQuery.

jsFiddle

HTML

<div class="readonly">
    <input type="text" />
    <div><input type="checkbox" /> Blah</div>
    <textarea>abc</textarea>
</div>

JavaScript

$(document).ready(function() {
    $('.readonly').find('input, textarea, select').attr('readonly', 'readonly');
});
5
répondu Daniel Imms 2013-03-20 06:02:16

j'ai bien peur que vous ne puissiez pas contrôler le comportement des éléments avec CSS.

CSS signifie feuilles de Style en cascade - il est seulement pour les éléments de style.


Mais vous pouvez utiliser JavaScript.

non testé

$('#myDiv').children().attr('readonly', true);
2
répondu Edward Ruchevits 2013-03-20 05:42:56

Essayez Avec Ce Qui Suit:

Partie De Script :

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#previewDiv :input").attr("disabled", true); 
});
</script>

HTML Part :

<div id="previewDiv">
<select>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
</select>
<input type="text" name="test" value="test">
</div>

je pense que cela peut vous aider à résoudre votre problème.

1
répondu John Peter 2013-03-20 09:31:12
$("div").prop("readonly", true);

<div> 
    <input type="text" value="value" /> <br />
    <textarea>value</textarea>
</div>
0
répondu sairamch 2018-08-29 10:41:29