2014-01-07 123 views
2

我有關於如何限制我的默認選中複選框的問題。例如我有7個複選框,例如 。一旦頁面加載,我想用3個默認選中的複選框限制它。限制默認選中複選框

this should be the output: 

Checkbox1 : true 
Checkbox2 : true 
Checkbox3 : true 
Checkbox4 : false 
Checkbox5 : false 
Checkbox6 : false 
Checkbox7 : false 

這裏是我的示例代碼:

var mvp = 3; 
$(document).ready(function() { 
$("input:checkbox").each(function(index) { 
    ($this).attr("checked",true); 
}); 

}); 

我的股票有了這個,我不知道在哪裏,我要把我的計數器(MVP)我的每個函數中。在這段代碼中,我所有的複選框都被選中:D。

對不起,一個新手的問​​題,請幫助我..

+1

'($此)'或'$(這一點)'? – undefined

+0

:D錯過了類型:D – user2593560

回答

2

有實際沒有必要,因爲each功能的計數器將通過在索引中。只需使用索引作爲計數器。

$(document).ready(function() { 
    $("input:checkbox").each(function(index) { 
      this.checked = (index < 3); 
    }); 
}); 

JS小提琴:http://jsfiddle.net/SB6aD/2/

+0

邏輯上可以接受..我修改了這段代碼。它的工作原理:D謝謝@Kevin – user2593560

+0

@ user2593560很高興​​我能幫忙! –

+0

但實際上,如果你有一個'' – Reigel

0

不要安裝使用JavaScript網頁的默認狀態,使用HTML 「選中」 屬性。

<form action="demo_form.asp"> 
    <input type="checkbox" name="vehicle" value="Bike"> I have a bike<br> 
    <input type="checkbox" name="vehicle" value="Car" checked> I have a car<br> 
    <input type="submit" value="Submit"> 
</form> 

在這個例子中,汽車複選框將被選中。

0

demo

$(document).ready(function() { 
    var checkboxes = $("input:checkbox"); 
    checkboxes.each(function(index) { 
     if (checkboxes.filter(':checked').length >= 3) {return;} 
     this.checked = true; 

    }); 

}); 
+0

這個循環很糟糕。您將針對循環中的每個步驟運行查詢。只需收集正確的元素並用計數器對它們進行迭代。 – Jazzepi

+1

@Jazzepi是啊是啊...所以我已經更新並添加了一個演示... – Reigel

0

遞減mvp您檢查後每個複選框。當它達到0時,開始取消選中。

$(document).ready(function() { 
    var mvp = 3; 
    $("input:checkbox").each(function(index) { 
     ($this).attr("checked", mvp > 0); 
     mvp--; 
    }); 
}); 
0

檢查.slice

$(function() { 
    var mvp = 3; 
    $('input:checkbox').slice(0, mvp).prop('checked', true); 
    $('input:checkbox').slice(mvp).prop('checked', false); 
}); 

See the JS Fiddle

和註釋,checked是不是一個屬性的屬性,使用.prop代替.attr

1

使用jquery :lt選擇器,它將匹配所有具有較小索引的元素。

實施例:

$(function() { 
    var mvp = 3; 
    $('input:checkbox:lt('+mvp+')').prop('checked', true); 
}); 
1

基於的@Kevin鮑爾索克斯的代碼:

var mvp = 3; 
$(document).ready(function() { 
    var counter = 0; 
    $("input:checkbox").each(function(index) { 
     if(counter < mvp){ 
      $(this).attr("checked",true); 
      counter++; 
     } 
    }); 
}); 

我修改這個代碼插入到此:

var mvp = 3; 
    $(document).ready(function() { 
$("input:checkbox").each(function(index) { 
     if(index < mvp){ 
      $(this).attr("checked",true); 
     } 
    }); 
}); 
+0

我們有同樣的想法,使用'索引' –