2010-08-09 9 views
104

jestem wykorzystanie wykończenia() tak:IE8 i jQuery za trim()

if($('#group_field').val().trim()!=''){ 

Gdzie group_field to element input typu text. To działa w Firefoksie, ale gdy próbuję go na IE8 daje mi ten błąd:

Message: Object doesn't support this property or method 

Kiedy usunąć trim(), to działa dobrze na IE8. Myślałem, że sposób, w jaki używam trim() jest poprawny?

Dzięki wszystkim za pomoc

Odpowiedz

201

Spróbuj to zamiast:

if($.trim($('#group_field').val()) != ''){ 

Więcej informacji:

+1

Dzięki, pomyślałem, że funkcje JQuery były zdolne do łańcuchów i tak działały! – Abs

+0

@Abs: Nie ma za co ... – Sarfraz

+38

@Abs: 'val()' nie zwraca obiektu jQuery, więc łańcuch jest poza opcją. Nazywasz metodę 'trim()' w łańcuchu, ale IE nie wie o 'String.trim'. – janmoesen

15

Należy użyć $.trim Li ke to:

if($.trim($('#group_field').val()) !='') { 
    // ... 
} 
11

O ile mi wiadomo, JavaScript String nie ma metody trim. Jeśli chcesz korzystać z funkcji przycinania, a następnie użyć

<script> 
    $.trim(string); 
</script> 
+1

Proszę [nie link do w3schools] (http://www.w3fools.com/)! –

3

Aby globalnie trymowania wejście z typem tekstu przy użyciu jQuery:

/** 
* Trim the site input[type=text] fields globally by removing any whitespace from the 
* beginning and end of a string on input .blur() 
*/ 
$('input[type=text]').blur(function(){ 
    $(this).val($.trim($(this).val())); 
}); 
10

Innym rozwiązaniem będzie określenie sposobu bezpośrednio na String w przypadku, gdy brakuje :

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    //Your implementation here. Might be worth looking at perf comparison at 
    //http://blog.stevenlevithan.com/archives/faster-trim-javascript 
    // 
    //The most common one is perhaps this: 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 

Następnie trim będzie działać niezależnie od przeglądarki:

var result = " trim me ".trim(); 
Powiązane problemy