2010-05-23 4 views

Répondre

10

Il n'y a pas la fonction trim intrinsèque sur les chaînes. jQuery ne définit $.trim, mais vous l'utiliser comme ceci:

$.trim($("#listname").val()) 

Par ex, vous passez la chaîne en elle, au lieu de l'appeler d'une propriété sur la corde.

Et comme l'autre answerer mentionné, si vous le souhaitez, vous pouvez l'ajouter à toutes les chaînes (bien que je tirer parti de la fonction de jQuery plutôt que de faire mes propres regexs, en raison des aléas Unicode dans les navigateurs):

if (!String.prototype.trim) { 
    String.prototype.trim = (function() { 
     function String_trim() { 
      return jQuery.trim(this); 
     } 
     return String_trim; 
    })(); 
} 

Je l'ai utilisé une fonction nommée là-bas (je always use named functions), mais vous pouvez utiliser moins de lignes de code si vous n'êtes pas pris la peine:

if (!String.prototype.trim) { 
    String.prototype.trim = function() { 
     return jQuery.trim(this); 
    }; 
} 
+0

Oh, je serais dérangé !! Pourquoi nomme-t-on quelque chose dont tu ne parleras plus jamais ...? (+1 pour le proton sol'n) – mpen

+1

@Mark: Pour mon raisonnement complet, voir le lien. :-) Mais fondamentalement: Parce que je veux voir des noms utiles dans les erreurs, les piles d'appels, les listes de points d'arrêt, etc., etc., etc. Bien que ce cas particulier soit assez simple, il me semble que chaque fois je pense est trop simple pour se soucier de faire ça "ça revient et me mord. –

1

C'est parce que trim n'est pas défini sur le type String dans tous les navigateurs. Ce n'est pas une fonction jQuery. Vous pouvez define the prototype et cela devrait fonctionner:

String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,""); 
} 
String.prototype.ltrim = function() { 
    return this.replace(/^\s+/,""); 
} 
String.prototype.rtrim = function() { 
    return this.replace(/\s+$/,""); 
} 
+3

+1 Notez que '\ s' est bogué dans certaines implémentations une fois vous entrez dans un espace non-ASCII, plus ici: http://perfectionkills.com/whitespace-deviations/ jQuer La fonction de y ne gère que l'un d'entre eux, mais ... –

Questions connexes