Hoofdletterongevoelige jQuery-kenmerkselector

Ik doe het volgende met kenmerk bevat selector $(‘[attribute*=value]’ )

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

Dit werkt voor de eerste invoer, maar niet voor de tweede invoer, aangezien “Man” een hoofdletter “M” heeft

Hoe kan ik van $( "input[name*='man']")een hoofdletterongevoelige selector maken?


Antwoord 1, autoriteit 100%

De eenvoudigste manier om dit te doen is door een hoofdletterongevoeligheidsvlag ‘i’ toe te voegen in het regex-gedeelte van de selector:

Dus in plaats van

$( "input[name*='man']")

Je zou kunnen doen

$( "input[name*='man' i]")

JS viool: https://jsfiddle.net/uoxvwxd1/3/


Antwoord 2, autoriteit 49%

Je kunt altijd .filter()gebruiken:

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

Het belangrijkste onderdeel hier is toLowerCase()waarmee het kenmerk namein kleine letters wordt weergegeven, zodat u kunt testen of het manbevat.


Antwoord 3

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

*REGEX_VALUE* – de waarde die u zoekt

Uiteindelijk heb ik regex gebruikt om te valideren of het attribuut ‘ID’ voldoet aan… regex is veel flexibeler als je een bepaalde overeenkomende waarde of waarden wilt vinden, hoofdlettergevoelig of ongevoelig of een bepaald bereik van waarden…


Antwoord 4

Ik kon de hoofdlettergevoeligheid van jQuery gewoon negeren om te bereiken wat ik wil met onderstaande code,

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

U kunt deze link gebruiken om code te vinden op basis van uw jQuery-versies,
https://css-tricks.com/snippets/jquery /make-jquery-contains-case-insensitive/

Er is ook een artikel waarin het veel goede dingen doet met jQuery: http://www.ultechspot.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly


Antwoord 5

Dit werkt voor mij als ik jQuery gebruik en als ik een item aan een tabel toevoeg

   // 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;
    }

Other episodes