自动完成以及拼写检查器和文本字段的复数检查
autocomplete along with spellchecker and plural check for textfield
嗨,我正在为我的一个自定义文本字段使用Drupal的6默认jQuery自动完成功能。
现在我想添加拼写检查器以及复数检查。
例如
Word: Potatos
Spellchecker suggestions (including plural check): Potato, Potatoes
是否有任何方法可以实现此功能,以便当用户键入Potatos时。首先,拼写检查器脚本将运行,它将建议正确的替代方案,一旦用户选择了正确的单词,自动完成脚本将运行?
您需要做的是首先安装一个用于执行拼写检查的服务器端解决方案,例如,您可以使用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();
});
然后,您需要为拼写检查器事件replace.word
:添加一个侦听器
spellchecker.on('replace.word', function() {
//ie: submit the form
});
如果你想做一些更高级的事情,你也可以尝试覆盖Drupals内置的自动完成Drupal.jsAC
事件.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;
}
}
};
});
然而,对我来说,通过在拼写检查器replace.word事件中使用jQuery的AJAX功能来实现您自己的自动完成更有意义——您也可以使用/自定义一个jQuery自动完成插件。
我使用Levenshein距离算法为jQuery UI默认自动完成添加了拼写检查功能。检查github:上的代码
https://github.com/martintaleski/spellcheckAutocomplete
它被封装为一个jquery插件。你所需要做的就是:
$('.your-selector').spellcheckAutocomplete();
我认为解决方案应该由ajax在服务器端调用。
选项1-soundex-mysql
简单快速的
如果你使用mysql,并且你的数据语言是英语,SOUNDEX可能是你的一个选择。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex
示例:
mysql> select SOUNDEX('potato'), SOUNDEX('potatos'), SOUNDEX('potatoes');
+-------------------+--------------------+---------------------+
| SOUNDEX('potato') | SOUNDEX('potatos') | SOUNDEX('potatoes') |
+-------------------+--------------------+---------------------+
| P300 | P320 | P320 |
+-------------------+--------------------+---------------------+
现在,在你的数据库中搜索基于soundex算法的相等或差异较小的单词。
选项2-sphinxsearch
它更难安装、配置和学习,但支持多种语言、词根算法、高级查询(布尔模式等)、改进的性能。。。
如果你想要更先进的系统,一个支持词干的全文搜索引擎会帮你很多忙。看看http://sphinxsearch.com/docs/current.html#conf-形态学。
有了词干,当你搜索土豆时,配置了morpohology=en的potatos和土豆搜索引擎会返回相同的结果。
- 使用Javascript使用数组检查文本框中的值
- 检查文本区域是否为空总是返回false
- 对照数组脚本检查文本框中的值不起作用
- CKEditor-如何在事件中检查文本区域是否为空
- 使用 javascript 检查文本框是否以 92 开头
- 使用 jQuery 检查文本可见性 .包含代码的行为不符合预期
- 使用 jQuery 检查文本框焦点
- 使用 Javascript 检查文本区域值是否为数字
- 如何使用jQuery检查文本框中的文本是否 asp.net 选中
- 如何检查文本区域中的文本输入并相应地按下提交按钮
- 正在检查文本区域中的空白字段
- jQuery/Javascript检查文本重叠
- 检查文本框是否包含文本,如果包含,则发送
- 如何检查文本区域的长度
- 如何检查文本输入是否与变量匹配
- 检查文本文件是否包含带有javascript的内容
- 需要客户端 javascript 函数来检查文本框中的数字
- Javascript 不会检查文本输入值是否随组合网格而变化
- 提交表单时,检查文本框是否为某个字符串,并根据答案显示警报
- 检查文本是否为 HTML