我需要翻译textarea
中的文字。当我按下space
键时,会发出ajax请求,其中包含该字段中的文本&然后由响应文本替换。
但是如果我能在那个空格和那之前用单个单词做一个ajax请求会更好。然后用响应词替换那个单词。这样我就可以逐字翻译。这正是我所需要的。
有什么想法吗?如果你有,请分享。
答案 0 :(得分:2)
函数getLast返回textarea中的最后一个单词
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。
答案 1 :(得分:1)
我想你知道如何在文本输入中检索字符串。
要隔离最后一个单词,您必须在字符串末尾附近的单词字符周围查找非单词字符。我建议使用Regular Expressions
备注:这不是一个答案元素,但我认为逐字翻译并不是一个好主意,将翻译输出放在与输入相同的区域可能会非常痛苦。您应该进行全局翻译,并在屏幕上的其他位置输出您的输出,并在输入更改时更新,例如在google翻译中。