Jquery tablice w warunku if


(Aglasek) #1

Witam

Mam np. coś takiego:

if( $('#id_country').val() == '3'|| 

	$('#id_country').val() == '2'|| 

	$('#id_country').val() == '236'|| 

	$('#id_country').val() == '76'|| 

	$('#id_country').val() == '16'|| 

	$('#id_country').val() == '1'|| 

	$('#id_country').val() == '20'|| 

	$('#id_country').val() == '86'|| 

	$('#id_country').val() == '9' ){

$('#check_country').show();

}

i teraz chciałbym to trochę skrócić i utworzyłem tablicę:

var tab = [3, 2, 236, 76, 16, 1, 20, 86, 9];

ale nie wiem jak to teraz dobrze zapisać w warunku aby spełniał to samo co kod powyżej?


(GioWDS) #2

Może funkcja in_array?

unction in_array (needle, haystack, argStrict) {

    // Checks if the given value exists in the array  

    // 

    // version: 1103.1210

    // discuss at: http://phpjs.org/functions/in_array

    // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    // + improved by: vlado houba

    // + input by: Billy

    // + bugfixed by: Brett Zamir (http://brett-zamir.me)

    // * example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);

    // * returns 1: true

    // * example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});

    // * returns 2: false

    // * example 3: in_array(1, ['1', '2', '3']);

    // * returns 3: true

    // * example 3: in_array(1, ['1', '2', '3'], false);

    // * returns 3: true

    // * example 4: in_array(1, ['1', '2', '3'], true);

    // * returns 4: false

    var key = '',

        strict = argStrict;


    if (strict) {

        for (key in haystack) {

            if (haystack[key] === needle) {

                return true;

            }

        }

    } else {

        for (key in haystack) {

            if (haystack[key] == needle) {

                return true;

            }

        }

    }


    return false;

}[/code]

(Damgora) #3

boleq , bez przesady - chyba już o to pytałeś ze dwa razy.

jQuery.inArray()


(Aglasek) #4

No próbowałem z tym jQuery.inArray() w ten sposób:

var tab = [3, 2, 236, 76, 16, 1, 20, 86, 9];

var value = $('#id_country').val();

if( jQuery.inArray(value, tab))

alert('ok');

ale coś mi nie działa tak jak trzeba.


(Drobok) #5

Ta funkcja nie zwraca bool'a tylko index tablicy. A w wypadku braku -1. Daj coś w stylu:

if( jQuery.inArray(value, tab)!=-1)

Ew naciągany:

if( jQuery.inArray(value, tab)+1)

(Aglasek) #6

Hmmm to działa tylko wtedy gdy wartości nie ma w tablicy natomiast gdy wartość jest w tablicy to nie działą


(Drobok) #7

To daj na odwrót:

if( jQuery.inArray(value, tab)>=0)

(Aglasek) #8

Może dobrze myślisz a raczej na pewno dobrze myślisz tylko może ja źle wytłumaczyłem o co mi chodzi. Podana tablica to tylko część wartośc i value z pola select i chciałbym aby wybranie tylko tych wartości które są w tablicy wywołały np. alert('cos tam');


(Damgora) #9

spróbuj:

if (jQuery.inArray(parseInt($('#id_country').val()), [3, 2, 236, 76, 16, 1, 20, 86, 9]) >= 0)    alert('ok');[/code]