2011-06-11 25 views
2

我正在嘗試使一個textarea輸入字段自動替換特定字符到不同的字符;例如:當用戶鍵入「a」字符時,應該自動替換爲「o」字符。我是新來的jQuery所以請你告訴什麼是錯用下面的代碼:如何將每個字符替換爲Jquery中的其他字符

$(function() { 
    $('#myTextBox').keyup(function() { 
     $("a").replaceWith("o"); 
     $("z").replaceWith("N"); 
     $("y").replaceWith("M"); 
     $("p").replaceWith("f"); 
     $("v").replaceWith("K"); 
     $("b").replaceWith("P"); 
    }); 
}); 

我感謝您的幫助,謝謝

編輯:

謝謝大家,以下和預期一樣:

$(function() { 
    $('#myTextBox').keyup(function() { 

     $(this).val($(this).val().replace(/a/g, "o")); 

    }); 
}); 
+0

jQuery選擇意味着選擇DOM元素。不要從文本框中選擇值。你應該使用'val()'函數來獲取值 – 2011-06-11 15:28:33

+0

RE:「是對的嗎?」那麼,你有沒有在你的應用程序中嘗試過它? – Kon 2011-06-11 15:58:20

+0

我改變了代碼中使用的val()函數,但不知道這是否正確.. – 2011-06-11 15:58:33

回答

4

首先$("a")實際目標頁面上的所有元素主播,所以我猜測這不是你想要的(除了p,其他人不存在,所以你的選擇器不會返回任何東西)。其次,您可以使用regular expressions to do your replace,而無需任何特殊的jQuery代碼。

相反的:

$("a").replaceWith("o"); 

嘗試:

$(this).val($(this).val().replace(/a/g, "o")); 

要打破下來:

var oldValue = $(this).val(); 
var newValue = oldValue.replace(/a/g, "o"); 

// Set to new value 
$(this).val(newValue); 
+0

對於給定的示例,這是可以的,但它不適用於傳遞替換的解決方案,如果它最終是循環的,那麼它就可以工作了)。想象一下,如果你也有一個規則替代「o」,但你先做了「a-> o」替換,你會明白我的意思。 – 2011-06-11 15:45:24

+0

@鉑金,好點。在這種情況下工作,但很好的評論。 – Kon 2011-06-11 15:51:19

+0

感謝您的代碼,我已更新代碼 – 2011-06-11 15:57:26

3

http://jsfiddle.net/2fYdT/69/

$(document).ready(function() { 
    $(".normal").each(function() { 
     var text = $(this).html(); 
     text = text.replace(/"/g, ''); 
     $(this).html(text); 
    }); 
}); 

這樣的事情:

<div class="normal">Lorem "ipsum "dolor"</div> 

結果:

<div class="normal">Lorem ipsum dolor</div> 
相關問題