2014-01-21 114 views
2

我對js/jquery(很明顯)很陌生,正在處理一個小項目,涉及將所有字母改爲toUpperCase,除了「o」,它將保持/更改爲小寫。如何更改輸入中某些字母的大小寫?

我已經實現了這一點:http://jsfiddle.net/HwTEj/

$(function() { 
$('input').keyup(function() { 
this.value = this.value.toUpperCase(); 
    }); 
}); 

但是我努力定義某些字母保持/更改爲小寫。

對此的任何幫助將不勝感激,因爲我是新來張貼問題所以請讓我知道,如果有任何額外的信息,你需要指出我在正確的方向。

+4

轉換完字符串後,用'o'替換出現的每個'O'? –

回答

7

要更換所有情況下,你需要像這樣:

this.value.toUpperCase().replace(/O/g, "o") 

編輯:

如果你想有一個選擇,將被替換,你能做到這一點的字符(使用O,F這裏H作爲一個例子):

this.value.toUpperCase().replace(/[OFH]/g, function($1){ 
    return $1.toLowerCase(); 
    }) 
+0

這兩個答案(通過rwisch45這個和更新的小提琴)工作很好 - 但我會標記這是我接受的答案,由於簡單的使用替換方法。謝謝大家對於一個非常明顯的問題(對你)的快速反應! – jvform

+0

如果您選擇這樣做,請注意您將會在每個kepress中提升並取代整個值! – Palpatim

2

Updated fiddle

$(function() { 
    $('input').keyup(function() { 
     this.value = this.value.toUpperCase().split('O').join('o');  
    }); 
}); 
+2

雖然在技術上是正確的,但通過使用split/join而不是簡單替換來添加混淆是沒有意義的,這就是該方法的用途。 –

+0

@IngoBürk同意。 upvoted koosa的解決方案是更好的答案 – rwisch45

1

其他的答案是好的,但在這裏是一種替代方案:

this.value = this.value.replace(/(o)|./ig, function(x, y) { 
    return y ? y.toLowerCase() : x.toUpperCase(); 
}); 

您可以用一個字符類的模式替換o(例如[xyz])如果你需要使其他字符小寫。

相關問題