Php 自动完成以及拼写检查和文本字段复数检查
您好,我正在为我的一个自定义文本字段使用Drupal的6个默认jQuery自动完成功能 现在我想添加拼写检查以及复数检查 例如Php 自动完成以及拼写检查和文本字段复数检查,php,javascript,ajax,drupal-6,jquery-autocomplete,Php,Javascript,Ajax,Drupal 6,Jquery Autocomplete,您好,我正在为我的一个自定义文本字段使用Drupal的6个默认jQuery自动完成功能 现在我想添加拼写检查以及复数检查 例如 Word: Potatos Spellchecker suggestions (including plural check): Potato, Potatoes 是否有任何方法可以实现此功能,以便在用户键入Potatos时。首先将运行拼写检查脚本,该脚本将建议正确的替代方案,一旦用户选择了正确的单词,自动完成脚本将运行?您需要做的是首先安装一个服务器端解决方案来执
Word: Potatos
Spellchecker suggestions (including plural check): Potato, Potatoes
是否有任何方法可以实现此功能,以便在用户键入Potatos时。首先将运行拼写检查脚本,该脚本将建议正确的替代方案,一旦用户选择了正确的单词,自动完成脚本将运行?您需要做的是首先安装一个服务器端解决方案来执行拼写检查,例如,您可以使用。如果您无法安装PSpell,您可以使用Googlespell(请务必查看使用条款),也可以使用一些客户端实现(尽管不如服务器端解决方案可靠) 有很多插件可以帮助你进行拼写检查,但是对于你的任务,我会选择一些更轻量级的插件,比如 使用所需选项启动拼写检查器,并为文本字段创建事件侦听器,一个简单的示例是:
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();
});
然后,您需要为拼写检查器事件添加一个侦听器replace.word
:
spellchecker.on('replace.word', function() {
//ie: submit the form
});
如果你想做一些更高级的事情,你也可以尝试覆盖Drupal内置的autocompleteDrupal.jsAC
event.keyup()
,看看是否触发了事件check.success
(没有拼写错误的单词)。如果没有拼写错误的单词,则使用drupals自动补全实现onkeyup事件。如果有拼写错误的单词,对这些事件不做任何处理
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;
}
}
};
});
但是,通过在spellcheckers replace.word事件中使用jQuery的AJAX功能来实现您自己的自动完成对我来说更有意义-您还可以使用/自定义一个jQuery自动完成插件。我使用Levenshein距离算法为jQuery UI默认自动完成添加了拼写检查功能。检查github上的代码: 它被包装成一个jquery插件。您需要做的只是:
$('.your-selector').spellcheckAutocomplete();
我认为解决方案应该由ajax调用服务器端 选项1-soundex mysql 简捷 如果您使用mysql,并且数据语言为英语,SOUNDEX可能是您的一个选择 例如:
mysql> select SOUNDEX('potato'), SOUNDEX('potatos'), SOUNDEX('potatoes');
+-------------------+--------------------+---------------------+
| SOUNDEX('potato') | SOUNDEX('potatos') | SOUNDEX('potatoes') |
+-------------------+--------------------+---------------------+
| P300 | P320 | P320 |
+-------------------+--------------------+---------------------+
现在,根据soundex算法在数据库中搜索相等或有微小差异的单词
选项2-斯芬克斯搜索
它很难安装、配置和学习,但支持多种语言、词干算法、高级查询(布尔模式等)、改进的性能
如果你想要更先进的系统,一个支持词干的全文搜索引擎将对你帮助很大。看一看
使用词干分析,当您搜索土豆时,配置了morpohology=en的土豆和土豆搜索引擎将返回相同的结果。cfk editor或tinymcemind@Dagon是否可以向textfield添加相同的功能?