Trim d'IE8 et de JQuery ()


103

J'utilise trim () comme ceci:

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

group_fieldest un élément d'entrée de type texte. Cela fonctionne dans Firefox mais lorsque je l'essaye sur IE8, cela me donne cette erreur:

Message: Object doesn't support this property or method

Lorsque je supprime le trim (), cela fonctionne bien sur IE8. Je pense que la façon dont j'utilise trim () est correcte?

Merci à tous pour toute aide

Réponses:


199

Essayez plutôt ceci:

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

Plus d'informations:


1
Merci, je pensais que les fonctions de JQuery pouvaient être chaînées et c'est ainsi qu'elles fonctionnaient toutes!
Abs

38
@Abs: val()ne renvoie pas d'objet jQuery, le chaînage n'est donc pas possible. Vous appeliez la trim()méthode sur une chaîne, mais IE ne sait pas String.trim.
janmoesen

FWIW, j'ai juste échoué à la révision du code de quelqu'un parce qu'il utilisait la syntaxe de l'OP. Ils n'ont évidemment testé dans aucune version de MSIE.
Adrian

3
Par ailleurs, si vous testez MSIE8, il ne connaît pas Array.indexOf (). Utilisez plutôt jQuery.inArray ().
Stone


10

Une autre option sera de définir la méthode directement sur Stringau cas où elle manquerait:

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, ''); 
  }
}

Puis trimfonctionnera quel que soit le navigateur:

var result = "   trim me  ".trim();

10

Autant que je sache, Javascript String n'a pas la méthode trim. Si vous souhaitez utiliser la fonction Trim, utilisez

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

3

Pour couper globalement l'entrée avec du texte de type à l'aide de 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()));
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.