J'ai un formulaire qui apparaît à l'intérieur d'une couche et je dois faire en sorte que tout ce qui se trouve à l'intérieur de ce formulaire ne soit lu qu'en ce qui concerne le type d'entrée utilisé. Quoi qu'il en soit, le faire?
C'est assez simple en JavaScript et fonctionnera efficacement dans tous les navigateurs prenant en charge les entrées de formulaire en lecture seule (ce qui correspond à peu près à tous les navigateurs publiés au cours de la dernière décennie):
var form = document.getElementById("your_form_id");
var elements = form.elements;
for (var i = 0, len = elements.length; i < len; ++i) {
elements[i].readOnly = true;
}
Vous pouvez utiliser le sélecteur :input
et procédez comme suit:
$("#myForm :input").prop('readonly', true);
:input
sélectionne tous les éléments <input>
, <select>
, <textarea>
et <button>
. De plus, l'attribut est readonly
, si vous utilisez disabled
pour les éléments qui ne seront pas publiés sur le serveur, choisissez donc la propriété que vous souhaitez utiliser.
Avec HTML5, il est possible de désactiver toutes les entrées contenues à l'aide de l'attribut <fieldset disabled />
.
désactivée:
Si cet attribut booléen est défini, les contrôles de formulaire qui constituent son descendants, sauf les descendants de son premier optionnel élément, sont désactivés, c’est-à-dire non modifiables. Ils ne recevront aucune les événements de navigation, tels que les clics de souris ou ceux liés à la mise au point. Souvent les navigateurs affichent ces commandes en gris.
Référence: MDC: fieldset
Son Javascript pur:
var fields = document.getElementById("YOURDIVID").getElementsByTagName('*');
for(var i = 0; i < fields.length; i++)
{
fields[i].disabled = true;
}
// get the reference to your form
// you may need to modify the following block of code, if you are not using ASP.NET forms
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
// this code disables all form elements
var elements = theForm.elements;
for (var i = 0, len = elements.length; i < len; ++i) {
elements[i].disabled = true;
}
$("#formid input, #formid select").attr('disabled',true);
ou pour le rendre en lecture seule:
$("#formid input, #formid select").attr('readonly',true);