Check the box
I am trying to show the position of a checkbox when the user checks the checkbox every time using JQuery. For example, when the user checks for Monday, it displays position 0, and when the user checks for Sunday, it displays position 6. I couldn't find a way to do this. I tried using .index () but it keeps showing me 0. Any idea how to do this?
Html code
<div class="col-sm-9 checkbox_days">
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Monday"> Monday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Tuesday"> Tuesday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Wednesday"> Wednesday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Thursday"> Thursday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Friday"> Friday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Saturday"> Saturday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Sunday"> Sunday
</label>
</div>
JQuery
$('.day').on('change', function() {
$(this).each(function() {
if (this.checked) {
alert($(this).index());
} else {
alert("unchecked");
}
});
});
+3
source to share
7 replies
You need to use .index(element)
to find the index of the items in the list.
$('.day').index(this)
If no argument is passed to the .index () method, the return value is an integer indicating the position of the first element in the jQuery object relative to its siblings.
$(function() {
$('.day').on('change', function() {
if (this.checked) {
alert($('.day').index(this));
} else {
alert("unchecked");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-sm-9 checkbox_days">
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Monday">Monday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Tuesday">Tuesday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Wednesday">Wednesday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Thursday">Thursday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Friday">Friday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Saturday">Saturday
</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Sunday">Sunday
</label>
</div>
+5
source to share
var map = {
'Monday': 0,
'Tuesday': 1,
'Wednesday': 2,
'Thursday': 3,
'Friday': 4,
'Saturday': 5,
'Sunday': 6
}
$('.day').on('change', function () {
if (this.checked) {
alert(map[$(this).val()]);
} else {
alert("unchecked");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-sm-9 checkbox_days">
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Monday">Monday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Tuesday">Tuesday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Wednesday">Wednesday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Thursday">Thursday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Friday">Friday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Saturday">Saturday</label>
<label class="checkbox">
<input type="checkbox" class="day" name="day[]" value="Sunday">Sunday</label>
</div>
you can use persistence of state in some variable and use it
0
source to share