JS - jQuery inarray ignoreCase() und contains()
gut, ich bin eher ein PHP-Mensch, und meine JS Fähigkeiten sind in der Nähe keine, wenn es darum geht, jede JS andere als einfache design-bezogene Operationen , so entschuldigen Sie mich, wenn ich fordere, das offensichtliche .
folgende Operationen wäre ein Kinderspiel in PHP (und möglicherweise auch in JS, aber ich bin kämpfen mit ungewohnten syntax hier ...)
Es ist eine Art von input-Validierung
var ar = ["BRS201103-0783-CT-S", "MAGIC WORD", "magic", "Words", "Magic-Word"];
jQuery(document).ready(function() {
jQuery("form#searchreport").submit(function() {
if (jQuery.inArray(jQuery("input:first").val(), ar) != -1){
jQuery("#contentresults").delay(800).show("slow");
return false;
}
Diese Frage hat 2 Teile .
- 1 - wie kann ich es möglich machen, dass das array groß-und Kleinschreibung ?
E. g. - BRS201103-0783-CT-S
wird das gleiche Ergebnis wie brs201103-0783-ct-s
UND Brs201103-0783-CT-s
oder MAGIC magic Magic MaGIc
im Prinzip brauche ich etwas wie ignoreCase() für Arrays , aber ich konnte nicht finden jede Bezugnahme auf das in jQuery noch JS...
Versuchte ich toLowerCase()
- aber Es funktioniert nicht auf dem array (ittirating??) und außerdem würde es lösen sich die gemischte groß-und Kleinschreibung ?
- 2 - Wie kann ich die Funktion zu erkennen, nur Teile oder
Kombinationen der Elemente ?
E. g. - wenn man die Typen nur "word"
, ich würde es gerne zu: als "words"
, und auch, wenn jemand Typen "some word"
sollte es gehen (mit "word" )
- Für 1, würde ich nur geben Sie Ihre JS-array in lowecase dann rufen Sie
if (jQuery.inArray(jQuery("input:first").val().toLowerCase(), ar) != -1){
, der zweite Teil der Fragen scheint ein wenig zu breit. Was sind die spezifischen Regeln?word
ist enthalten inwords
ok, abersome word
ist nicht enthalten inwords
. - danke für den Kommentar , das, was ich meinte ist
some word
enthältword
und auchwords
enthältword
(Teil-string...) - Ok, seltsamste . setzen
val().toLowerCase()
wird die Arbeit an einem Wort wie "Zauber/Magie" - aber jetzt ist es false zurück, wird das stringBRS201103-0783-CT-S
egal wie ich Sie betreten (kleine Kleinbuchstaben , Großbuchstaben oder gemischt.. - Wahrscheinlich, weil
magic
Kleinbuchstaben ist im array, währendBRS201103-0783-CT-S
ist nicht. Überprüfen Sie alex ' Antwort, er veröffentlicht eine einfache Funktion übergeben Sie Ihre gesamte array in Kleinbuchstaben um.:)
- Ok, ich checke es jetzt, aber nur für das Verständnis besser , wenn mein array wird alles in Kleinbuchstaben , als jeder input-Fall passieren ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Teil 1
Können Sie Ihr array komplett in Kleinbuchstaben und Kleinbuchstaben Ihre Eingabe, so
indexOf()
funktionieren wird, wie es die Durchführung eines case insensitive Suche.Können Sie die Kleinbuchstaben einer Zeichenfolge mit
toLowerCase()
wie Sie bereits herausgefunden.Tun, ein array,...
Teil 2
Könnte man prüfen, ob ein Teilstring, zum Beispiel...
Alternativ können Sie auch überspringen Sie in diesem Fall die Umwandlung der array werden alle Kleinbuchstaben durch den Aufruf
toLowerCase()
auf jedenelem
überprüfen, bevor SieindexOf()
.some()
undmap()
werden nicht unterstützt in älteren IEs, sondern einfach polyfill. Ein Beispiel für ein polyfill für jeden verfügbar ist, die auf den verlinkten Dokumentation.Als Fabrício Matté auch darauf hingewiesen, können Sie die jQuery-Entsprechungen hier
$.map()
fürArray.prototype.map()
und$.grep()
mitlength
Eigenschaft fürArray.prototype.some()
. Dann erhalten Sie die browser-Kompatibilität für frei.indexOf()
funktioniert ähnlich wie PHP ' sstrpos
, außer dassindexOf
zurück-1
für kein Spiel stattfalse
wie PHP funktioniert und die syntax/Parameter ist etwas anders.var arr = ar.map(function(elem) { return elem.toLowerCase(); });
und dannif (jQuery.inArray(jQuery("input:first").val(), arr) != -1)
(Beachten Sie, dass mein original-array wurde als "ar" und nicht "arr" . der Schuldige da ?toLowerCase()
auf die Eingabe dervalue
z.B.jQuery("input:first").val().toLowerCase()
..map()
wird umgesetzt in JS 1.6. Die Verwendung von jQuery im.map()
würde die Kompatibilität mit IE6-8, die der native JS.map
nicht.map()
es anders (wie Abflachung zurückgegebenen arrays)..map
können ebenfalls Hinzugefügt werden, um die array-Prototyp, wenn es nicht nativ unterstützt wird, wie gezeigt, in den MDN-Artikel.=]
Um zu überprüfen, ob ein array enthält ein element, der groß-und Kleinschreibung, ich habe diesen code:
Hier ist ein Turnschuh, um mit zu spielen
array match der groß-und Kleinschreibung