将jquery拼写检查添加到动态生成的文本区域

时间:2011-08-31 12:50:01

标签: jquery ajax spell-checking

我正在尝试将Brandon Aaron的jquery拼写检查器用于我正在构建的应用程序。

https://github.com/brandonaaron/jquery-spellcheck#readme

我已根据原始页面代码一部分的文本区域设置脚本和拼写检查工作。拼写检查行为通过文档头部中的以下代码与相关字段相关联:

$('#test4').spellcheck({ events: 'keyup' });

当我尝试将相同的行为添加到新的表单元素时,例如:

var textarea = $("<textarea>");
textarea.spellcheck({ events: 'keyup' });

[NB最初有$(“”)。html()但是根据下面的建议改变了这个并得到同样的错误]

我收到以下错误(来自Google Chrome控制台)

未捕获的TypeError:对象#没有方法'拼写检查'

我认为这是因为拼写检查器在某些时候将拼写检查方法与每个现有的textarea相关联,但是当我创建一个新方法时,它没有这个方法?如果是这样,我如何将行为与新元素相关联?还是我走错了路?

非常感谢任何帮助。

谢谢,

德里克

3 个答案:

答案 0 :(得分:2)

我认为你需要:

var textarea = $("textarea");
textarea.spellcheck({ events: 'keyup' });

答案 1 :(得分:2)

拼写检查脚本是一个jQuery插件,因此它只能在jQuery对象上运行,而不能在DOM节点或HTML字符串上运行。这样做的:

var textarea = $("<textarea/>");

// Note: you may need to insert the textarea into the document
// before calling the spellchecker. E.g. like this:
$('body').append(textarea);

textarea.spellcheck({ events: 'keyup' });

应该有用。

答案 2 :(得分:2)

你不应该将textarea分配给$ .html()因为这只是一个字符串所以你不能将它链接到拼写检查

typeof $("#notify-container").html() == string

所以它应该是:

var textarea = $("textarea");
textarea.spellcheck({ events: 'keyup' });

然后将textarea附加到身体或你想要的地方