Подключение Яндекс Спеллер для исправления орфографических ошибок в русском, украинском или английском тексте
Подключение Яндекс Спеллер для исправления орфографических ошибок в русском, украинском или английском тексте
Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы
📅 27 сентября 2023
👁🗨 740
<script src="https://yastatic.net/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="search">
<script>
$(document).ready(function () {
// эта функция получает наш результат проверки орфографии
fix_spell = function (data) {
data.forEach(function (elem) {
// она находит наше поле ввода по имени
$('#search').val(
// и меняет всё на правильные слова без ошибок
$('#search').val().replace(
elem['word'],
elem['s'][0] || elem['word']
)
);
});
}
});
// обработчик нажатия на клавиши
document.addEventListener('keydown', function (e) {
// если нажат пробел или энтер
if ((e.keyCode == 32) || (e.keyCode == 13)) {
// делим текст на строки
var lines = $('#search').val().replace(/\r\n|\n\r|\n|\r/g, "\n").split("\n");
// и обрабатываем каждую строчку:
lines.forEach(function (line) {
if (line.length) {
// отправляем строку со словами на проверку в Спеллер, результат сразу отправляется в функцию fix_spell
$.getScript('https://speller.yandex.net/services/spellservice.json/checkText?text=' + line + '&callback=fix_spell');
}
});
}
});
</script>
UPD (14.03.2025):
На чистом JavaScript
const searchField = document.getElementById('title-search-input');
let script = null;
window.fix_spell = data => data.forEach(elem => {
searchField.value = searchField.value.replace(elem.word, elem.s[0] || elem.word);
});
document.addEventListener('keydown', e => {
if ([32, 13].includes(e.keyCode)) {
searchField.value.replace(/\r\n|\n\r|\n|\r/g, '\n').split('\n').forEach(line => {
if (line.length) {
if (!script) {
script = document.createElement('script');
document.body.appendChild(script);
}
script.src = `https://speller.yandex.net/services/spellservice.json/checkText?text=${encodeURIComponent(line)}&callback=fix_spell`;
}
});
}
});