Добавить отключенный атрибут к элементу ввода, используя Javascript - PullRequest
118 голосов
/ 27 сентября 2010

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

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

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

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

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

Как я также могу добавить атрибут disabled к входу?

Ответы [ 6 ]

268 голосов
/ 27 сентября 2010

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

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

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

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

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

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

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

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

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

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

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

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

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

... ...

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

44 голосов
/ 20 марта 2014

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

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");
14 голосов
/ 06 декабря 2013

Если вы используете 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 голосов
/ 27 сентября 2010

Вы можете получить элемент 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';
          });
});
9 голосов
/ 06 декабря 2013
$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true); 
element.disabled = true;
element.setAttribute('disabled', true);

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

5 голосов
/ 27 сентября 2010

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

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...