部落客在做一個修改個人資訊的頁面的時候,想要将個人資訊封裝傳遞到另一個頁面,其中的星期是string類型的。
String week="一二三四五"
想要實作複選框中一~五預設選中。本來想用jstl标簽庫實作,發現頁面中的代碼量太複雜。本着簡潔明了的精神,決定嘗試用js來實作。

html代碼:
<div class="form-group">
<label for="id">星期:</label>
<div class="checkbox">
<label><input type="checkbox" name="weeks" value="一" checked="checked" />一</label>
<label><input type="checkbox" name="weeks" value="二" checked="checked" />二</label>
<label><input type="checkbox" name="weeks" value="三" checked="checked" />三</label>
<label><input type="checkbox" name="weeks" value="四" checked="checked" />四</label>
<label><input type="checkbox" name="weeks" value="五" checked="checked" />五</label>
<label><input type="checkbox" name="weeks" value="六" />六</label>
<label><input type="checkbox" name="weeks" value="日" />日</label>
</div>
</div>
用js實作的主要問題就是在頁面加載完成的時候實作選中,如果在頁面加載前實作,會出現找不到複選框的問題。
js部分代碼:
$(function(){
var week="${ScheduleGroup.week}";
$("input[name='weeks']").each(function(){
if(week.indexOf($(this).val(), )!=-){
$(this).attr("checked",'true')
}
//alert(week.indexOf($(this).val(), 0))
});
});
在js中想要通過el表達式擷取值的話,一定要在el表達式外面加“”,否走會報錯。
然後通過jquery語句
$("input[name='weeks']")
擷取所有的複選框,并通過
each(function(){}
給每個複選框綁定事件。js中有很多檢查字元串是否包含的方法,在這裡選用的是indexof(a,b),indexof中有兩個參數,a參數是指是否包含的字元,b參數是從第幾個字元開始判斷。
在本例中,如果week字元串不包含複選框的值的話,會傳回-1,如果包含的話,會傳回複選框val在字元串中的位置
week.indexOf('二', )
傳回值就是1,所在位置的初始值從0開始。
week.indexOf('日', )
傳回值就是-1。
最後通過
$(this).attr("checked",'true')
給複選框設定為選中。