1161 votes

Comment voir si la chaîne contient une sous-chaîne

J'ai un shoppingcart qui affiche les options de produit dans un menu déroulant, et je veux faire d'autres champs de la page visible uniquement si elles sélectionnez "Oui" dans l'option précédente. Le problème est que le panier comprend également le prix modificateur dans le texte, et qui peut être différente pour chaque produit. Donc, si je fais ce qu'il fonctionne:

 $(document).ready(function() {
  $('select[id="Engraving"]').change(function() {
   var str = $('select[id="Engraving"] option:selected').text(); 
   if (str == "Yes (+ $6.95)") {
    $('.engraving').show();
   } else {
    $('.engraving').hide();
   }
  });
 });

Cependant, je préfère utiliser quelque chose comme ceci:

 $(document).ready(function() {
  $('select[id="Engraving"]').change(function() {
   var str = $('select[id="Engraving"] option:selected').text(); 
   if (str *= "Yes") {
    $('.engraving').show();
   } else {
    $('.engraving').hide();
   }
  });
 });

Ce qui ne fonctionne pas.

Je ne veux effectuer l'action si l'option sélectionnée contient le mot "Oui", et serait ignorer le prix de modificateur.

J'apprécie toute l'aide.

2379voto

SLaks Points 391154

Comme ça:

 if (str.indexOf("Yes") >= 0)
 

Notez que ceci est sensible à la casse.
Si vous voulez une recherche insensible à la casse, vous pouvez écrire

 if (str.toLowerCase().indexOf("yes") >= 0)
 

Ou,

 if (/yes/i.test(str))
 

137voto

hookedonwinter Points 4200

Vous pouvez utiliser search ou match pour cela.

str.search( 'Yes' )

retournera la position du match, ou -1 s'il n'est pas trouvé.

29voto

Andy Braham Points 958

Autrement:

 var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}
 

** Testé sur Firefox, Safari 6 et Chrome 36 **

10voto

robkorv Points 41

Vous pouvez utiliser ce Polyfill dans ie et chrome

 if (!('contains' in String.prototype)) {
    String.prototype.contains = function (str, startIndex) {
        "use strict";
        return -1 !== String.prototype.indexOf.call(this, str, startIndex);
    };
}
 

8voto

Karim Points 161

Renvoie le nombre de fois que le mot-clé est inclus dans la chaîne.

 str.match(/yes/g).length;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X