web-dev-qa-db-fra.com

Sélecteur d'attribut jQuery insensible à la casse

Je suis en train d'utiliser l'attribut using suivant contient selector $ ('[attribut * = valeur]')

<input name="man-news">
<input name="milkMan">

<script>    
    $( "input[name*='man']").css("background-color:black");
</script>

Ceci fonctionne pour la 1ère entrée mais pas la deuxième entrée car "Man" a un "M"

Comment faire de $( "input[name*='man']") un sélecteur insensible à la casse?

39
gshaffer

Vous pouvez toujours utiliser .filter():

var mans = $('input').filter(function() {
    return $(this).attr('name').toLowerCase().indexOf('man') > -1;
});

mans.css('background-color', 'black');

La partie clé ici est toLowerCase() qui met en valeur l'attribut name, ce qui vous permet de le tester pour contenir man.

35
Bojangles
var control = $('input').filter(function() {
    return /*REGEX_VALUE*/i.test($(this).attr('id'));
});

* REGEX_VALUE * - la valeur que vous voulez trouver

J'ai fini par utiliser regex pour vérifier si l'attribut "ID" satisfait ... regex est beaucoup plus flexible si vous voulez trouver une ou plusieurs valeurs correspondantes, sensibles à la casse ou insensibles, ou une certaine plage de valeurs ...

2
Juvil

J'étais juste capable d'ignorer la sensibilité de la casse de jQuery pour réaliser ce que je voulais en utilisant le code ci-dessous,

            $.expr[":"].contains = $.expr.createPseudo(function(arg) {
            return function( elem ) {
                return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
            };
        });

Vous pouvez utiliser ce lien pour trouver du code basé sur vos versions de jQuery, https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

Il y a aussi cet article où jquery fait beaucoup de bonnes choses: http://www.ultechspot.com/jquery/using-jquery-search-htearch-html-text-and-show-or-hide-accordingly

1
Umesh Patil

Cela fonctionne pour moi en utilisant jQuery et si j'ajoute un élément à une table 

    // check if item already exists in table
    var inputValue = $('#input').val(); // input
    var checkitem = $('#exampleTable td.value div.editable').filter(function() {

        //check each table's editable div matches the input value in lowercase 
        if ($(this).text().toLowerCase() === inputValue.toLowerCase()) {
            itemexists = true; 
        }   
    });

    if (itemexists) {
        alert("item exists in the table");
        return;
    }
0
S.shaikh