1. 程式人生 > >js中判斷字串是否包含

js中判斷字串是否包含

博主在做一個修改個人資訊的頁面的時候,想要將個人資訊封裝傳遞到另一個頁面,其中的星期是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') 給複選框設定為選中。