2011-12-08 52 views
1

我試着寫一個函數,將第一個字到星號畢竟charactewrs轉換,轉換角色,以星號在Javascript

說我有MYFIRSTWORD MYSECONDWORD,ID希望它轉換爲上KEYUP星號,但僅限於第二個字,使其作爲如此...

MYFIRSTWORD * **

我已經使用了每一個字母下面僅將它轉換,這可能嗎?

$(this).val($(this).val().replace(/[^\s]/g, "*")); 
+4

'this.value = this.value.replace(...);'這裏不需要jQuery。 –

+0

你是說「TEST1 TEST2 TEST3」會變成「TEST1 ***** *****」嗎? –

+0

是的,這是正確的 – Liam

回答

3

我不知道有一個正則表達式做,但你可以這樣做:

$("input").keyup(function() { 
    var i = this.value.indexOf(" "); 
    if (i > -1) { 
     this.value = this.value.substr(0, i) 
        + this.value.substr(i).replace(/[\S]/g, "*"); 
    } 
}); 

演示:http://jsfiddle.net/fc7ru/

+0

+1簡單而不錯的解決方案。 – kapa

+0

不工作! (-1)角色保持原樣。 – linuscl

+0

@linuscl - 我的答案包括一個演示小提琴,仍然適用於我(甚至在我的手機上)。你是說小提琴不適合你,還是你在自己的項目中使用了代碼,並且它在那裏不起作用? (如果是後者,是否包含jQuery?你是否將代碼封裝在文檔準備好的處理程序中?哪個瀏覽器?) – nnnnnn

0
<input type="text" onkeyup='$(this).val($(this).val().replace(/[^\s]/g, "*"));' /> 

入住JsFiddle

+4

請在這裏發佈您的代碼; Stackoverflow的要點是自包含的,而不是依靠外部網站保持功能/可訪問性。使用JS Fiddle * demos *,而不是*庫*。 –

+3

我想知道是誰投了票。這只是OP代碼的副本,它不起作用。標記爲不是答案。 – kapa

+0

@David ThomasI無法向您顯示在此工作的代碼 –

-1

你應該試試這個代碼

var array = $(this).val().split(" "); 
var newValue = ""; 
for(var i=0; i<array.length; i++) { 
    if (i==0){ 
    newValue = array[i]; 
    continue; 
    } else{ 
    newValue+= array[i].replace(/[^\s]/g, "*"); 
    } 
} 

$(this).val(newValue); 
+0

修復代碼中的語法錯誤。 – ThiefMaster

+1

如果你不介意如何改善這個問題的一些建議:你可以初始化newValue到array [0],然後從i = 1運行你的循環來避免if/else。考慮到你已經將字符串分割爲空格,你的正則表達式可能只是'/./g'不可能的?我認爲你需要將一些空格連接回輸出字符串。 – nnnnnn

+0

這裏不需要使用'continue'。 – kapa