it-roy-ru.com

Добавить отключенный атрибут к элементу ввода, используя Javascript

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

Пока у меня есть следующий код, чтобы скрыть мой ввод:

$(".shownextrow").click(function() { 
    $(this).closest("tr").next().show().find('.longboxsmall').hide();
});

Это вход, который в результате будет скрыт:

<input class="longboxsmall" type="text" />

Как я могу также добавить отключенный атрибут к входу?

116
user342391

$("input").attr("disabled", true); с ... я больше не знаю.

Это декабрь 2013 года, и я действительно не знаю, что вам сказать.

Сначала это всегда было .attr(), потом всегда было .prop(), поэтому я вернулся сюда, обновил ответ и сделал его более точным.

Через год jQuery снова передумал, и я даже не хочу следить за этим.

Короче говоря, на данный момент это лучший ответ: "Вы можете использовать оба ... но это зависит".

Вместо этого вы должны прочитать этот ответ: https://stackoverflow.com/a/5876747/25749

И их примечания к выпуску для этого изменения включены здесь:

Ни .attr (), ни .prop () не должны использоваться для получения/установки значения. Вместо этого используйте метод .val () (хотя использование .attr ("value", "somevalue") продолжит работать, как это было до 1.6).

Краткое изложение предпочтительного использования

Метод .prop () должен использоваться для логических атрибутов/свойств и для свойств, которые не существуют в html (например, window.location). Все остальные атрибуты (те, которые вы можете увидеть в html) можно и нужно продолжать обрабатывать с помощью метода .attr ().

Или другими словами:

".prop = недокументированный материал"

".attr" = материал документа

... ...

Можем ли мы все извлечь урок здесь о стабильности API ...

265
Incognito

Рабочий код из моих источников:

HTML WORLD

<select name="select_from" disabled>...</select>

JS WORLD

var from = jQuery('select[name=select_from]');

//add disabled
from.attr('disabled', 'disabled');



//remove it
from.removeAttr("disabled");
43
Mircea Stanciu

Если вы используете jQuery, то есть несколько различных способов установить атрибут disabled.

var $element = $(...);
    $element.prop('disabled', true);
    $element.attr('disabled', true); 

    // The following do not require jQuery
    $element.get(0).disabled = true;
    $element.get(0).setAttribute('disabled', true);
    $element[0].disabled = true;
    $element[0].setAttribute('disabled', true);
12
iConnor

Вы можете получить элемент DOM и установить свойство disabled напрямую.

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').hide()[0].disabled = 'disabled';
});

или если их несколько, вы можете использовать each(), чтобы установить их все:

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});
11
user113716
$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true); 
element.disabled = true;
element.setAttribute('disabled', true);

Все вышеперечисленное является вполне допустимым решением. Выберите тот, который соответствует вашим потребностям лучше всего.

8
DJSpud

Просто используйте метод jQuery attr()

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
5
Gabe