天天看點

js中判斷字元串是否包含

部落客在做一個修改個人資訊的頁面的時候,想要将個人資訊封裝傳遞到另一個頁面,其中的星期是string類型的。

String week="一二三四五"

想要實作複選框中一~五預設選中。本來想用jstl标簽庫實作,發現頁面中的代碼量太複雜。本着簡潔明了的精神,決定嘗試用js來實作。

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')

給複選框設定為選中。