Решаем еще 2 проблемы скрипта SPUtility
1) MakeReadOnly метод для многострочного поля не работает корректно.
var richtext=SPUtility.GetSPField('Многострочный текст');
if(richtext!=null)
{
richtext.MakeReadOnly();
}
Результат:
Решение:
MakeRichTextBoxReadOnly :function(SPField){
var div = document.createElement('div');
div.className="div_class";
div.innerHTML = SPField.Textbox.value;
SPField.Controls.parentNode.insertBefore(div, SPField.Controls.parentNode.firstChild);
SPField.MakeReadOnly();
var cell=SPField.LabelRow.cells[1];
var docTags = cell.getElementsByTagName('div');
for (var i=0; i < docTags.length; i++) {
if (docTags[i].className == 'sputility-readonly') {
docTags[i].style.display = 'none';
}
}
}
Использование:
var richtext=SPUtility.GetSPField('Многострочный текст');
if(richtext!=null)
{
//richtext.MakeReadOnly();
mgfUtils.SPUtility.MakeRichTextBoxReadOnly(richtext);
}
Наш результат:
2) Следующая проблема. Не верно устанавливается значение для поля подстановки где элементов больше 25
var lookup=SPUtility.GetSPField('Подстановка');
if(lookup!=null)
{
lookup.SetValue('5');
}
Результат:
на первый взгляд вроде значение установилось, на нажав "сохранить", получаем ошибку (если поле было обязательным). При разборе проблемы понимаю что значение установилось только в input поле, а еще есть скрытое поле откуда sharepoint забирает выбранное значение.
SetLookupFieldValue : function(SPField, value)
{
SPField.SetValue(value);
lookupFieldText = mgfUtils.GetFieldByTagAndTitle('input',SPField.Name);
lookupFieldId = document.getElementById(lookupFieldText.optHid);
if(lookupFieldId !=null)
{
lookupFieldId.value=value;
}
},
Использование:
var lookup=SPUtility.GetSPField('Подстановка');
if(lookup!=null)
{
//lookup.SetValue('5');
mgfUtils.SPUtility.SetLookupFieldValue(lookup,5);
}
Результат: значение верно устанавливается и форма сохраняется.