#sharepoint-2010 #spell-checking
#sharepoint-2010 #проверка орфографии
Вопрос:
У меня есть SharePointWebControls:UserField
в макете страницы, которое необходимо исключить из проверки орфографии, поскольку в противном случае при выборе пользователя в коде элемента управления обнаруживается большое количество орфографических ошибок.
Похоже, что в Sharepoint 2007 такое поведение можно было бы реализовать с помощью excludefromspellcheck = "true"
но, похоже, это не работает для Sharepoint 2010. Кто-нибудь сталкивался с такой же проблемой и нашел способ ее обойти?
Ответ №1:
На основе SpellCheckEntirePage.js похоже, что это все еще так:
var elements=document.body.getElementsByTagName("*");
for (index=0; index < elements.length; index)
{
if (null !=elements[index].getAttribute("excludeFromSpellCheck"))
{
continue;
}
// snipped - if (elements[index].tagName=="INPUT")
// snipped - else if (elements[index].tagName=="TEXTAREA")
}
Но excludeFromSpellCheck не является свойством пользовательского поля, поэтому оно, вероятно, не будет автоматически копироваться в отображаемый HTML. При визуализации элемент управления UserField состоит из нескольких элементов. Я бы попробовал посмотреть на источник представления, чтобы увидеть, попадает ли excludeFromSpellCheck в окончательный HTML. Но для установки атрибута для соответствующих элементов может потребоваться использовать какой-нибудь jQuery, подобный этому:
$("(input|textarea)[id*='UserField']").attr("excludeFromSpellCheck", "true");
Комментарии:
1. Потребовалось немного больше усилий, чтобы заставить обычный javascript выполнять эту работу вместо использования jQuery, но этот подход сработал для установки атрибута для всех отображаемых html-элементов.
Ответ №2:
Вы можете отключить проверку орфографии для определенных полей, установив для атрибута «excludeContentFromSpellCheck» значение «true» для текстовой области и элементов управления вводом, для которых вы не хотите проверять орфографию.
Я делал это на всех своих макетах страниц. Теперь я больше не получаю ложных срабатываний.
Решение состоит в том, чтобы добавить тег div вокруг полей, которые вы не хотите проверять, и добавить javascript, который устанавливает «excludeFromSpellCheck» в «true» для элементов в теге div.
Решение, которое я нашел, описано здесь: Неточная проверка орфографии на страницах публикации SharePoint
Ответ №3:
Джо Фернер опубликовал это решение, которое сработало для меня.
https://www.altamiracorp.com/blog/employee-posts/spell-checking-your-custom-lay
Это исключает всех пользователей на странице:
function disableSpellCheckOnPeoplePickers() {
var elements = document.body.getElementsByTagName("*");
for (index = 0; index < elements.length; index ) {
if (elements[index].tagName == "INPUT" amp;amp; elements[index].parentNode amp;amp; elements[index].parentNode.tagName == "SPAN") {
var elem = elements[index];
if (elem.parentNode.getAttribute("NoMatchesText") != "") {
disableSpellCheckOnPeoplePickersAllChildren(elem.parentNode);
}
}
}
}
function disableSpellCheckOnPeoplePickersAllChildren(elem) {
try {
elem.setAttribute("excludeFromSpellCheck", "true");
for (var i = 0; i < elem.childNodes.length; i ) {
disableSpellCheckOnPeoplePickersAllChildren(elem.childNodes[i]);
}
}
catch(e) {
}
}
Ответ №4:
Этот код работает только частично, потому что, если вы снова введете значение средства выбора людей, вы будете проверять значение мусора средства выбора людей в течение одного раза.