あなたがする必要があるのは、最初にスペルチェックを実行するためのサーバー側のソリューションをインストールすることです。たとえば、PSpellを使用できます。PSpell をインストールできない場合は、Googlespell を使用できます (利用規約を必ず確認してください)。クライアント側の実装も利用できます (ただし、サーバー側のソリューションほど信頼性は高くありません)。
スペルチェックに役立つプラグインはたくさんありますが、タスク Id には、jQuery スペルチェッカーのようなより軽量なものを使用します。
必要なオプションでスペルチェッカーを開始し、テキストフィールドのイベントリスナーを作成します。簡単な例は次のとおりです。
var spellchecker = new $.SpellChecker('textarea', {
lang: 'en',
parser: 'text',
webservice: {
path: '../../webservices/php/SpellChecker.php',
driver: 'pspell'
},
suggestBox: {
position: 'above'
}
});
$('textarea').keyup(function() {
//you would probably want to add a timer looking to see if user is finished typing
spellchecker.check();
});
次に、Spellchecker イベントのリスナーを追加しますreplace.word
。
spellchecker.on('replace.word', function() {
//ie: submit the form
});
Drupal.jsAC
もっと高度なことをしたい場合は、オートコンプリートイベントに組み込まれている Drupals をオーバーライドし.keyup()
て、イベントcheck.success
が発生したかどうかを確認することもできます (スペルが間違っている単語はありません)。スペルミスの単語がない場合は、onkeyup イベントに drupal オートコンプリートの実装を使用します。単語のつづりが間違っている場合、これらのイベントに対しては何もしません。
var misspelledWord = false;
spellchecker.on('check.success', function() { misspelledWord = false; });
spellchecker.on('check.fail', function() { misspelledWord = true; });
jQuery(document).ready(function(){
Drupal.jsAC.prototype.onkeyup = function (input, e) {
if(misspelledWord) {
if (!e) {
e = window.event;
}
switch (e.keyCode) {
case 16: // shift
case 17: // ctrl
case 18: // alt
case 20: // caps lock
case 33: // page up
case 34: // page down
case 35: // end
case 36: // home
case 37: // left arrow
case 38: // up arrow
case 39: // right arrow
case 40: // down arrow
return true;
case 9: // tab
case 13: // enter
case 27: // esc
this.hidePopup(e.keyCode);
return true;
default: // all other keys
if (input.value.length > 0)
this.populatePopup();
else
this.hidePopup(e.keyCode);
return true;
}
}
};
});
ただし、スペルチェッカーのreplace.wordイベントでjQueryのAJAX機能を使用して独自のオートコンプリートを実装する方が理にかなっています.jQueryオートコンプリートプラグインの1つを使用/カスタマイズすることもできます.