Все,
У меня есть ряд элементов как это в форме:
<input type="checkbox" name="chk[140]">
<input type="hidden" value="3" name="ctcount[140]">
<input type="hidden" value="Apples" name="catname[140]">
<input type="checkbox" name="chk[142]">
<input type="hidden" value="20" name="ctcount[142]">
<input type="hidden" value="Bananas" name="catname[142]">
<input type="checkbox" name="chk[144]">
<input type="hidden" value="200" name="ctcount[144]">
<input type="hidden" value="Strawberries" name="catname[144]">
<input type="checkbox" name="chk[145]">
<input type="hidden" value="0" name="ctcount[145]">
<input type="hidden" value="Carrots" name="catname[145]">
Когда пользователь нажимает кнопку, я хочу JavaScript к:
1. Loop through all the checkboxes
2. For all the checked checkboxes,
2a. Get ctcount value
2b. Get catname value
2c. If ctcount value > 50, alert a message saying "Unable to add item
as max limit for 'catname' has reached.
2d. Break the loop after it encountered first ctcount value that is
greater than 50.
Я плохо знаком с JQuery.. имейте следующий код до сих пор:
var checklimit = 50; $ ('#frmTest input:checkbox:checked') .each (функция (i) {предупреждение (this.value);});
Как я делаю это использование JQuery?
Спасибо
Попробуйте это ... он извлекает идентификатор из имени, а затем использует его для поиска значения и имени. Демо здесь .
Скрипт
$(document).ready(function(){
$(':button').click(function(){
var total = 0, done = false;
$(':checked').each(function(){
if (!done) {
var catid = $(this).attr('name').replace(/chk\[(\d+)\]/,'$1'); // extract #
var catval = parseInt( $('input[name=ctcount\[' + catid + '\]]').val(), 10);
var catnam = $('input[name=catname\[' + catid + '\]]').val();
if (total + catval > 50) {
alert('Unable to add item as max limit for "' + catnam + '" has reached');
done = true;
} else {
total = total + catval;
}
}
})
alert( 'The total is ' + total );
});
})
$('.button').click(function() {
var sum = 0;
var cancel = false;
$('input[type="checkbox"]:checked').each(function() {
if(cancel)
return;
var count = parseInt($(this).next().attr('value'));
var name = $(this).next().next().attr('value');
sum += count;
if(sum > 50) {
alert('no way dude');
cancel = true;
return;
}
});
if(!cancel)
// sum <= 50
});