在开发一个国外外包项目时,客户提出一个需求,就是希望在文本框中输入单词,在保存前能够进行拼写检查,如果发现单词错误,可以提醒用户进行改正,为此,在结合参考了各种方案之后,选择了一个免费的方案,Google的一个API接口,https://www.google.com/tbproxy/spell?lang=,该接口提供多种语言的拼写检查,并能够返回相似的单词,并且幸运的是,在网上找到了一个开源的程序包googiespell,所以经过简单的包装处理,做成了一个拼写检查的小控件,使用起来就很方便了。
实现原理
在.net的页面上,在submit按钮提交之前,将页面的文本框内容,通过ajax的方式,采用代理类的方式,发送给Google的接口,接口会返回拼写结果,如果没有拼写错误,浏览器端就直接执行提交操作,如果有错误,弹出一个Spell Check Error的对话框,提示用户进行修改,点“yes”返回页面修改,点“No”的话就忽略掉拼写错误,直接提交。
代码分享
用户控件Shouji138.com.SpellValid.ascx
这个文件封装了错误提示的输入框效果,还有提交按钮的一些操作代码。
<%@ Control Language="C#" AutoEventWireup="true" Codebehind="Shouji138.com.SpellValid.ascx.cs"
Inherits="SpellCheck.Shouji138_com_SpellValid" %>
<script type="text/javascript">
var googie5 = new GoogieSpellMultiple("/googiespell/", "/googiespell/sendSpellReq.aspx?lang=");
//New menu item "Add"
var add_checker = function(elm) {
return true;
};
var add_item = function(elm, current_googie) {
googie5.ignoreAll(elm);
};
//googie5.appendNewMenuItem("Add", add_item, add_checker);
var fn_no_more_errors = function(e) {
// alert(''no more errros'');
passcheck = true;
}
googie5.setDependent();
googie5.setCustomAjaxError(function(req) {
// alert(''error'');
});
googie5.useCloseButtons();
googie5.noMoreErrorsCallback(fn_no_more_errors);
googie5.setSpellContainer("global_spell_container");
// googie5.decorateTextareas(textbox, "hel", "t");
//Getstatespan2();
var passcheck = false;
var savebutton = null;
var waiti = 0;
function CheckSpell(obj) {
if (typeof (Page_ClientValidate) == ''function'') {
if (Page_ClientValidate() == false) {
return false;
}
  |