js中判斷字串是否包含
阿新 • • 發佈:2019-01-24
博主在做一個修改個人資訊的頁面的時候,想要將個人資訊封裝傳遞到另一個頁面,其中的星期是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(), 0)!=-1){
$(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('二', 0)
返回值就是1,所在位置的初始值從0開始。
week.indexOf('日', 0)
返回值就是-1。
最後通過 $(this).attr("checked",'true')
給複選框設定為選中。