2014-07-14 5 views
0

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

$("#id_first_name").attr('disabled', true); 
[etc. fields] 

не работает для IE. Я начал обходить и заменить их

id_first_name.disabled = true; 

, который действительно работает, но я столкнулся с препятствием. Пара моих полей помечена значком -, который вызывает ошибку «ReferenceError: недопустимое назначение левой стороны».

Похоже, что он отлично работал в jQuery, потому что метка была в кавычках, но мне нужно решение, которое не использует jQuery и не меняет метку этих полей. Пожалуйста, посоветуйте, без успеха я пытался:

id_security-email.disabled = true; 
'id_security-email'.disabled = true; 
id_security\-email.disabled = true; 
+0

'document.getElementById ('id_security-почта') .disabled = true; '? – Anton

ответ

1

Вы действительно должны быть настройки «заблокировано» свойства, а не атрибут.

$("#id_security-email").prop("disabled", true); 

Кроме того, ваши попытки ссылаться на глобальное свойстве также могут быть сделана так:

window["id_security-email"].disabled = true; 

Еще один вариант:

document.getElementById("id_security-email").disabled = true; 
+0

... хотя я * думал * jQuery имеет код, чтобы не устанавливать такие атрибуты, как атрибут «disabled», в строку «true» ... – Pointy

+0

Я запускаю jQuery 1.5, прежде чем был введен .prop(). – SirDeimos

+1

@SirDeimos хорошее горе, которому более 3 лет. В таком случае старый '.attr()' должен работать; что заставляет вас думать, что это не так? В каких браузерах это происходит? – Pointy

Смежные вопросы