Ранее я рассказывал, как можно работать с полями элемента, те
примеры хорошо применять в NewForm создания элемента. Сегодня я хочу рассказать,
как можно работать с полями в форме EditForm.
В этой статье:
1. Режим "только чтение" для полей
2. Скрытие комментариев к полю
3. Скрытие полей в зависимости от значений
Режим "только чтение" для полей
Так как часть полей было заполнено на этапе создания
элемента, то хорошо бы сделать так, что бы пользовали их не меняли, в прошлой статье
я рассказывал как установить свойство поля "disabled", но напомню
1 | $( "[id^='Title']" ).attr( "disabled" , "disabled" ); |
Но вот с полями многострочный текст есть сложности, и прошлый способ, который я описывал ранее, не столь удобен, и хочу предложить новый. Мы просто
переопределим шаблон рендера поля:
1 2 3 4 5 6 7 8 9 10 | ( function () { var ctx = {}; ctx.Templates = {}; ctx.Templates.Fields = { 'History' : { 'EditForm' : SPFieldNote_Display } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx); })(); |
Также сложности с установкой атрибутов поля "disabled" могут возникнуть с полями «выбор» в режиме
переключатель. Просто переопределим шаблон:
1 2 3 4 5 6 7 8 9 10 | ( function () { var ctx = {}; ctx.Templates = {}; ctx.Templates.Fields = { 'TypeSCOM' : { 'EditForm' : SPField_FormDisplay_Default } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx); })(); |
Скрытие комментариев к полю
Как видно на скриншоте выше комментарии стали очень близко
к значению поля, да и вообще зачем комментарии к полям, которые пользователь
все равно не может изменить. Давайте его скроем
1 | $( 'nobr:contains("Вид мониторинга")' ).closest( 'td' ).next( 'td' ).find( 'span' ).hide() |
Так ка мы переопределили шаблон поля на режим просмотра, то
обращаться пришлось по отображаемому имени поля, если поле стандартное и мы
можем обратиться по ID
1 | $( "[id^='Title']" ).closest( 'span' ).next( 'span' ).hide() |
Скрытие полей в зависимости от значений
В прошлой статье я рассказывал, как в зависимости от значения
поля меня видимость другого поля, но вот мы забрали у пользователей возможность
менять поле, но нам также нужно скрывать поле в зависимости от значения.
Сделаем следующим образом
1 2 3 4 5 6 7 | if ($( "[id^='SCOM']" ).prop( 'checked' )) { $( 'nobr:contains("Вид мониторинга")' ).closest( 'tr' ).show(); } else { $( 'nobr:contains("Вид мониторинга")' ).closest( 'tr' ).hide(); } |
}
Релевантный ссылки:
Комментариев нет:
Отправить комментарий