web-dev-qa-db-fra.com

comment puis-je désactiver tout ce qui se trouve dans un formulaire à l'aide de javascript/jquery?

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?

40
Luci

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;
}
35
Tim Down

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.

37
Nick Craver

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

28
piotr_cz

Son Javascript pur:

var fields = document.getElementById("YOURDIVID").getElementsByTagName('*');
for(var i = 0; i < fields.length; i++)
{
    fields[i].disabled = true;
}
4
Shanu
// 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;
}
0
SHS
$("#formid input, #formid select").attr('disabled',true);

ou pour le rendre en lecture seule:

$("#formid input, #formid select").attr('readonly',true);
0
Māris Kiseļovs