textarea - 光标前后的世界代替它

时间:2012-11-05 18:58:15

标签: javascript jquery ajax

我需要翻译textarea中的文字。当我按下space键时,会发出ajax请求,其中包含该字段中的文本&然后由响应文本替换。

但是如果我能在那个空格和那之前用单个单词做一个ajax请求会更好。然后用响应词替换那个单词。这样我就可以逐字翻译。这正是我所需要的。

有什么想法吗?如果你有,请分享。

2 个答案:

答案 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翻译中。