Думаю многие хотели изменить свойства полей с помощью javascript, это не сложно
делается, и в интернете много разных решений. Но вот я так и не нашел способа
которым можно запретить редактирование поля Многострочный текст (multiline text
field)
В начале я попробовал использовать код
$("input[title='Отображаемое имя']").attr("disabled", "disabled");
Но это не работало, и я решил посмотреть, как устроено поле
На скриншоте видно, что данные находятся во втором уровне <div>
Тогда я решил использовать
$('nobr:contains("Дополнительное ПО")').closest('td').next('td').find('div') .find('div').attr("disabled",
"disabled");
Это помогло, и я уже подумал что задача решена. И
действительно, в Internet Explorer,
данные в поле внести не получалось. Но когда я попробовал Chrome, то в поле можно было внести
данные.
Тогда я удалил один <div> и возможность редактирования пропала
Тогда я решил дальше смотреть, и нашел такое свойство contenteditable. При изменении его на false я добился желаемого результата.
Вот пример javascript :
$('nobr:contains("Дополнительное ПО")').closest('td').next('td').find('div').attr("contenteditable","false");
Решил еще написать полезный скрипт для других видов полей
Однострочный текст (Text):
$("input[title='Название']").attr("readonly","true");
$("input[title='Этап работы']").attr("disabled", "disabled");
Выбор (Choice)
$("input[title='Принадлежность к системе']").attr("disabled", "disabled");
Да/нет (Boolean)
$("input[Title='Установить ПО']").attr("disabled", "disabled");
Число (Number)
$("input[title='Объем памяти']").attr("disabled", "disabled");
Обновление!!! 19.02.2015
К полям можно обращаться по ID, а не по отображаемому имени и тем самым мы уходим от проблемы изменения отображаемого имени.
пример скрытия поля, где мы обращаемся по IntarnalName поля
$("[id^='Title']").closest('tr').hide();
$("[id^='Title']").attr("disabled", "disabled");
Обновление 12.11.2015
Пользователь или группа (peoplepicker)
jQuery("[id^=' field id ']").attr("disabled", "disabled");
jQuery("[id^=' field id '] a.sp-peoplepicker-delImage").hide(); // скрывает иконку удаления выбранного пользователя
пример скрытия поля, где мы обращаемся по IntarnalName поля
$("[id^='Title']").closest('tr').hide();
$("[id^='Title']").attr("disabled", "disabled");
Обновление 12.11.2015
Пользователь или группа (peoplepicker)
jQuery("[id^=' field id ']").attr("disabled", "disabled");
jQuery("[id^=' field id '] a.sp-peoplepicker-delImage").hide(); // скрывает иконку удаления выбранного пользователя
продолжение темы Представление списка, форматирование, статистика в названии веб части.(jQuery + SharePoint 2013 Fields Part 2)
Комментариев нет:
Отправить комментарий