Question .trim () en JavaScript ne fonctionne pas dans IE


J'ai essayé d'appliquer .trim() à une chaîne dans l'un de mes programmes JavaScript. Cela fonctionne bien sous Mozilla, mais une erreur s’affiche lorsque je l’essaye dans IE8. Est-ce que quelqu'un sait ce qui se passe ici? Y at-il de toute façon je peux le faire fonctionner dans IE?

code:

var ID = document.getElementByID('rep_id').value.trim();

affichage d'erreur:

Message: L'objet ne supporte pas cette propriété ou méthode
Ligne: 604
Char: 2
Code: 0
URI: http: //test.localhost/test.js

454
2018-02-22 00:37


origine


Réponses:


Ajoutez le code suivant pour ajouter une fonctionnalité de découpage à la chaîne.

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

765
2018-02-22 00:44



Il semble que cette fonction ne soit pas implémentée dans IE. Si vous utilisez jQuery, vous pouvez utiliser $.trim() au lieu (http://api.jquery.com/jQuery.trim/).


201
2018-02-22 00:43



jQuery:

$.trim( $("#mycomment").val() );

Quelqu'un utilise $("#mycomment").val().trim(); mais cela ne fonctionnera pas sur IE.


55
2017-12-24 07:00



Malheureusement, il n'y a pas de support JavaScript pour trim ().

Si vous n'utilisez pas jQuery (qui possède une méthode .trim ()), vous pouvez utiliser les méthodes suivantes pour ajouter un support de coupe aux chaînes:

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+$/,"");
}

32
2018-02-22 00:46



https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim

Ceci est un ajout assez récent à javascript, et ce n'est pas supporté par IE.


12
2018-02-22 00:40



J'ai eu un problème similaire en essayant de couper une valeur d'une entrée et ensuite demander si elle était égale à rien:

if ($(this).val().trim() == "")

Cependant, cela a créé une clé dans les travaux pour IE6 - 8. Assez bizarrement, j'ai essayé de le modifier comme ceci:

   var originalValue = $(this).val();

Cependant, en utilisant la méthode trim de jQuery, cela fonctionne parfaitement pour moi dans tous les navigateurs.

var originalValueTrimmed = $.trim($(this).val());              
            if (originalValueTrimmed  == "") { ... }

8
2017-07-15 16:07



J'ai écrit du code pour implémenter la fonctionnalité de découpage.

LTRIM (trim gauche):

function ltrim(s)
{
    var l=0;
    while(l < s.length && s[l] == ' ')
    {   l++; }
    return s.substring(l, s.length);
} 

RTRIM (couper à droite):

function rtrim(s)
{
    var r=s.length -1;
    while(r > 0 && s[r] == ' ')
    {   r-=1;   }
    return s.substring(0, r+1);
 }

RÉDUIRE (couper les deux côtés):

function trim(s)
{
    return rtrim(ltrim(s));
}

OU 

Expression régulière est également disponible que nous pouvons utiliser.

function trimStr(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

Explication utile


5
2018-06-07 14:59