boleq
(Aglasek)
18 Lipiec 2011 14:04
#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
(GioWDS)
18 Lipiec 2011 14:23
#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]
boleq , bez przesady - chyba już o to pytałeś ze dwa razy.
jQuery.inArray()
boleq
(Aglasek)
18 Lipiec 2011 16:34
#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
(Drobok)
18 Lipiec 2011 16:43
#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)
boleq
(Aglasek)
18 Lipiec 2011 17:11
#6
Hmmm to działa tylko wtedy gdy wartości nie ma w tablicy natomiast gdy wartość jest w tablicy to nie działą
drobok
(Drobok)
18 Lipiec 2011 17:14
#7
To daj na odwrót:
if( jQuery.inArray(value, tab)>=0)
boleq
(Aglasek)
18 Lipiec 2011 17:57
#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’);
spróbuj:
if (jQuery.inArray(parseInt($('#id_country').val()), [3, 2, 236, 76, 16, 1, 20, 86, 9]) >= 0) alert('ok');[/code]