Подтвердить что ты не робот

Как я могу отключить все внутри формы с помощью javascript/jquery?

У меня есть форма, которая появляется внутри слоя, и мне нужно сделать все внутри этой формы только для чтения относительно того, какой тип ввода это. В любом случае, чтобы сделать это?

4b9b3361

Ответ 1

Это довольно просто в простом JavaScript и будет эффективно работать во всех браузерах, поддерживающих входные данные только для чтения (что почти во всех браузерах, выпущенных за последнее десятилетие):

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;
}

Ответ 2

Вы можете использовать селектор :input и выполните следующее:

$("#myForm :input").prop('readonly', true);

:input выбирает все элементы <input>, <select>, <textarea> и <button>. Также атрибут readonly, если вы используете disabled для элементов, которые они не будут размещены на сервере, поэтому выберите, какое свойство вы хотите на основе этого.

Ответ 3

С HTML5 можно отключить все входы, содержащиеся с помощью атрибута <fieldset disabled />.

отключен:

Если этот атрибут Boolean установлен, элементы управления формой, которые являются его потомков, кроме потомков его первого необязательного элемент, отключены, то есть не редактируются. Они не получат никаких просмотр событий, таких как щелчки мыши или связанные с фокусом. Часто браузеры отображают такие элементы управления, как серый.

Ссылка: MDC: fieldset

Ответ 4

Его чистый Javascript:

var fields = document.getElementById("YOURDIVID").getElementsByTagName('*');
for(var i = 0; i < fields.length; i++)
{
    fields[i].disabled = true;
}

Ответ 5

Вы можете сделать это самым простым способом, используя jQuery. Он будет делать это для всех элементов ввода, выбора и textarea (даже если их число больше).

$("input, select, option, textarea", "#formid").prop('disabled',true);

или вы можете это сделать, но это отключит все элементы (только те элементы, на которые он может быть применен).

$("*", "#formid").prop('disabled',true);


отключенное свойство может применяться к следующим элементам:

  • кнопка
  • FIELDSET
  • ввод
  • OPTGROUP
  • опция
  • выберите
  • текстовое поле

Но это зависит от того, что вы предпочитаете использовать.

Ответ 6

$("#formid input, #formid select").attr('disabled',true);

или сделать его доступным только для чтения:

$("#formid input, #formid select").attr('readonly',true);

Ответ 7

// 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;
}

Ответ 8

Старый вопрос, но никто не упомянул использование css:

pointer-events: none;

Вся форма становится невосприимчивой к щелчку, но также зависает.

Ответ 9

Этот никогда не подводил меня, и я не видел этот подход на других ответах.

//disable inputs
$.each($("#yourForm").find("input, button, textarea, select"), function(index, value) {
		$(value).prop("disabled",true);
	});

Ответ 10

Спасибо Тиму,

Это было действительно полезно. Я сделал небольшую настройку, когда у нас есть элементы управления, и мы обрабатываем событие на них.

 var form = document.getElementById("form");
                var elements = form.elements;
                for (var i = 0, len = elements.length; i < len; ++i) {
                    elements[i].setAttribute("onmousedown", "");
                }