2013-11-11 2 views
4

Я пытаюсь передать значения из списка флажков при выборе функции jquery, поэтому я могу играть с выбранными значениями. Ниже код не работаетКак передать несколько значений флажка в массив

Я хочу, чтобы иметь возможность использовать значение вне функции CheckBox

Так, например, если я имел другую кнопку вне этой функции она должна быть в состоянии прочитать то, что хранилось в массив - Приведенный ниже код не работает по какой-то причине, любая помощь будет оценена

JQuery

<script> 
    $(document).ready(function(){ 

    var vals = [] 
    $('input:checkbox[name="check[]"]').each(function() { 
     if (this.checked) { 
      vals.push(this.value); 
     } 
    }); 

    alert(vals[0]); 
    }); 
    </script> 

HTML код

<form> 
<input value="BOOZE" type="checkbox" name="check[]" >PUB, MATES, <br> 
<input value="TV" type="checkbox" name="check[]">BRIBING THE KIDS TO GO BED<br> 
<input value="BOOZE" type="checkbox" name="check[]">RAVING TILL THE EARLY HOURS<br> 
<input value="PETS" type="checkbox" name="check[]">PLAYING GRAND THEFT AUTO <br> 
<input value="GEEK" type="checkbox" name="check[]">TWEETING ABOUT SOMETHING <br> 
<input value="SPORT" type="checkbox" name="check[]">GYM<br> 
<input value="XMAS" type="checkbox" name="check[]">SINGING CHRISTMAS SONGS<br> 
<input type="checkbox" class="chkNumber" name="check[]">SHARING A DELIGHTFUL BOTTLE 
</form> 
+1

Каждая вещь, которую вы написали довольно хорошо, но не могу понять вопрос четко. – Jai

+0

Ожидаете ли вы, что 'vals' изменится при изменении значений флажков? Если это так, получение значений в 'document.ready' неверно. Вы должны получить их, когда вы нажмете кнопку. – Archer

ответ

5

Вы должны иметь обработчик изменения, где вам нужно фильтровать проверенные элементы флажок

var vals = []; 
$(document).ready(function() { 

    var $checkes = $('input:checkbox[name="check[]"]').change(function() { 
     vals = $checkes.filter(':checked').map(function() { 
      return this.value; 
     }).get(); 

     alert(JSON.stringify(vals)); 
    }); 
}); 

Демо: Fiddle

+1

это правильно, но здесь переменная vals не globel, ее область действия равна $ ('input: checkbox [name = "check []"]'). Change(); функции он не может использовать эти значения для другого события или функции –

+0

Я сделал его глобальной переменной, и он работал thanx – Hashey100

2

ваш код правильно просто положить

var vals = []; 

вне

$(document).ready(); 

как

<script> 
var vals = []; 
$(document).ready(function(){ 
$('input:checkbox[name="check[]"]').each(function() { 
    if (this.checked) { 
     vals.push(this.value); 
    } 
}); 

alert(vals[0]); 
}); 
</script> 
3

Вы можете сделать это, используя метод .map() как:

var vals = $('input:checkbox[name="check[]"]:checked').map(function() { 
    return this.value; 
}).get(); 

alert(vals[0]); 

Fiddle Demo

Смежные вопросы