我需要将文本翻译成textarea
. 当我按下该space
键时,会使用该字段中的文本发出 ajax 请求,然后替换为响应文本。
但是,如果我可以在该空格之前使用单个单词发出 ajax 请求,然后只用响应单词替换该单词,那会更好。这样我就可以逐字翻译,这正是我所需要的。
有任何想法吗?有的话请分享。
我需要将文本翻译成textarea
. 当我按下该space
键时,会使用该字段中的文本发出 ajax 请求,然后替换为响应文本。
但是,如果我可以在该空格之前使用单个单词发出 ajax 请求,然后只用响应单词替换该单词,那会更好。这样我就可以逐字翻译,这正是我所需要的。
有任何想法吗?有的话请分享。
函数 getLast 返回文本区域中的最后一个单词
function getLast(o) {
return ("" + o).replace(/[\s-]+$/, '').split(/[\s-]/).pop();
}
如果按下空格键(keyCode 32),则对 textarea 的值调用 getLast 函数。然后进行 AJAX 调用,将最后一个单词作为变量传递。
$('#textArea').keyup(function(e) {
if (e.keyCode == 32) {
var textArea = $('textArea');
var word = getLast(textArea.val());
$.ajax({
type: "POST",
url: "index.cfm?fuseaction=user.test2",
data: {
currentWord: word
}
}).done(function(translation) {
var translatedWord = $.trim(translation);
var string = textArea.val();
string = string.replace(word, translatedWord);
textArea.val(string);
});
}
});
但是,我觉得您最好的选择是在最后逐字翻译整个 textarea。
我想您知道如何在文本输入中检索字符串。
要隔离最后一个单词,您必须在字符串末尾附近的单词字符周围寻找非单词字符。我建议使用正则表达式
备注:这不是一个答案元素,但我认为逐字翻译不是一个好主意,将翻译输出与输入放在同一区域可能会非常痛苦。您可能应该进行全局翻译并将您的输出放在屏幕的其他位置,并在输入更改时更新它,例如在谷歌翻译中。