のテキストを翻訳する必要がありますtextarea
。キーを押すspace
と、そのフィールドのテキストを使用してajaxリクエストが作成され、応答テキストに置き換えられます。
ただし、そのスペースの直前の1つの単語でajaxリクエストを作成し、その単語のみを応答単語に置き換えることができれば、より良いでしょう。このように私は単語ごとに翻訳することができました、そしてそれはまさに私が必要としているものです。
何か案は?もしあれば共有してください。
のテキストを翻訳する必要がありますtextarea
。キーを押すspace
と、そのフィールドのテキストを使用してajaxリクエストが作成され、応答テキストに置き換えられます。
ただし、そのスペースの直前の1つの単語で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);
});
}
});
ただし、最後にテキストエリア全体を単語ごとに翻訳するのが最善の策だと思います。
テキスト入力で文字列を取得する方法を知っていると思います。
最後の単語を分離するには、文字列の終わり近くにある単語文字を囲む非単語文字を探す必要があります。正規表現を使用することをお勧めします
備考:これは答えの要素ではありませんが、単語ごとの翻訳は良い考えではないと思います。翻訳出力を入力と同じ領域に配置すると、使用するのが非常に面倒になる可能性があります。おそらく、グローバル翻訳を行い、出力を画面の別の場所に配置し、たとえばgoogle translateのように、入力が変更されたときに更新する必要があります。