2012-05-21 68 views
2

我試圖改變文本輸入值用戶填寫後,以大寫字符串:的Javascript大寫不工作

$('#University').blur(function(){ 
    if ($(this).attr("value") != '') { 
     var uni = $(this).val(); 
     uni.toUpperCase(); 
     alert(uni); 
     $(this).attr("value", uni); 
     }; 
}); 

<input type="text" name="Universidad" size="45" class="required" id="University"> 

如果我寫「萊昂德羅」進入該領域時,alert(uni)拋出:「萊昂德羅」,而不是「LEANDRO」。任何想法?

我不能使用CSS,因爲我必須通過這種形式發送大寫的數據,和css只改變渲染,而不是價值

回答

17

改成這樣:

uni = uni.toUpperCase(); 

字符串是不可改變的,所以你需要將結果賦給變量,覆蓋舊的字符串。

+1

謝謝!這比我預期的更容易,謝謝! –

+2

很好的答案。而你的用戶名/頭像讓我笑了大約5分鐘。 –

6

.toUpperCase()函數返回一個新的字符串;它不會修改現有的字符串。

+1

一個好的答案應該解釋這個問題,並且(在合理的範圍內)提供修改後的固定代碼。 –

2

你可以用更好的方式重寫你的函數。見下,

$('#University').blur(function(){ 
    this.value = this.value.toUpperCase(); 
}); 
+0

你是對的,謝謝! –

1

toUpperCase()是一種方法。它返回一個值,你需要做一些事情。

您在uni上調用了.toUpperCase()方法,但您沒有將它分配到任何地方。

uni = uni.toUpperCase(); 

...應該有所幫助。