2012-11-05 110 views
-3

我需要翻譯textarea中的文本。當我按下space鍵時,會在該字段&中的文本中進行ajax請求,然後替換爲響應文本。textarea - 將光標移到光標前並替換它

但是,如果我只是在空格&之前用單個單詞進行ajax請求,那麼將會更好,然後用響應詞替換該單詞。這樣我可以逐字地翻譯&,這正是我需要的。

任何想法?如果您有任何問題,請分享。

+0

但是,如果您發佈代碼會更好 –

+0

我嘗試了我在第一段中所說的內容。還沒有嘗試過第二段。需要想法。 – sha256

回答

2

功能如果空格鍵被按壓(鍵代碼32)getLast返回最後一個字中的textarea

function getLast(o) { 
    return ("" + o).replace(/[\s-]+$/, '').split(/[\s-]/).pop(); 
} 

,然後調用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。

+0

+1,看起來不錯!更新單詞怎麼樣?如果我繼續打字並且不等待響應被替換,該怎麼辦? – sha256

1

我想你知道如何檢索文本輸入中的字符串。

要隔離最後一個單詞,必須在字符串末尾附近尋找包含單詞字符的非單詞字符。我建議使用Regular Expressions

備註:這不是一個答案元素,但我認爲逐字逐句翻譯不是一個好主意,並且將翻譯輸出放在與輸入相同的區域可能會非常痛苦。您應該進行全局翻譯,並將輸出結果顯示在屏幕上的其他位置,並在輸入發生變化時更新它,例如Google翻譯。

+0

我明白。但是我認爲這樣做不會太糟糕,如果用戶在輸入文字後看到文字翻譯的話:) – sha256

+0

@ sha404是的,對於「打字文本」的名義情況,您是對的。但是有很多少數情況。通常,當你輸入一個文本時,有些東西比如輸入「退格」,編輯別的東西,最後一個單詞,複製​​/粘貼等......並且所有這些功能都會因爲你計劃實現的交互而被打破。 –

+0

是的,你是對的! – sha256