-3

我需要将文本翻译成textarea. 当我按下该space键时,会使用该字段中的文本发出 ajax 请求,然后替换为响应文本。

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

有任何想法吗?有的话请分享。

4

2 回答 2

2

函数 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。

于 2012-11-05T19:10:38.393 回答
1

我想您知道如何在文本输入中检索字符串。

要隔离最后一个单词,您必须在字符串末尾附近的单词字符周围寻找非单词字符。我建议使用正则表达式

备注:这不是一个答案元素,但我认为逐字翻译不是一个好主意,将翻译输出与输入放在同一区域可能会非常痛苦。您可能应该进行全局翻译并将您的输出放在屏幕的其他位置,并在输入更改时更新它,例如在谷歌翻译中。

于 2012-11-05T19:19:32.817 回答