2013-07-05 80 views
1

檢查我有兩個輸入複選框,我想檢查/使用jQuery取消勾選:設置複選框與jQuery的

<input type="checkbox" name="user1" value="1" id="u1" onclick="loadUserCalendar(1)"> 
<input type="checkbox" name="user2" value="2" id="u2" onclick="loadUserCalendar(2)"> 

JavaScript代碼:

var list = new cookieList("calendar_users"); 
var users = list.items(); 
for (var i = 0; i < users.length; i++) { 
    $('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', true); 
    console.log('substring: ' + users[i].substr(1,1)); 
    console.log('enabling user ' + users[i]); 
} 

var users包含以下值:u1,u2。爲了僅獲取用戶標識,我執行了一個子字符串,它可以獲取正確的編號,如下面在控制檯輸出中所示。

控制檯輸出:

substring: 1 
enabling user u1 
substring: 2 
enabling user u2 

我不知道,爲什麼當代碼運行的複選框不檢查。我在這裏做錯了什麼?

編輯:我使用jQuery 1.4.4由於兼容性的原因,這就是爲什麼我使用.attr()

回答

2

內聯事件處理程序(onclick="loadUserCalendar(1)")不是jQuery方式。你不應該有任何在你的HTML。擺脫他們,並添加到您的jQuery:

$(function() { 
    $('form').on('click',':checkbox', function() { 
     loadUserCalendar($(this).val()); 
    }); 
}); 

但是,也許你想要的是這樣的:

$(function() { 
    $('form').on('click',':checkbox', function() { 
     $('form :checkbox').attr('checked','checked'); 
    }); 
}); 

jQuery的1.ancient版本:

$(function() { 
    $('input[type=checkbox]').live('click', function() { 
     // do things 
    }); 
}); 
+0

它說:'未捕獲的類型錯誤:對象#沒有方法'on'' – doonot

+0

你使用的是什麼版本的jQuery? 1.4.potato? –

+0

由於兼容性原因我使用jQuery 1.4.4 – doonot

0

您正在使用什麼版本的jQuery?

你必須嘗試類似:

$('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', 'checked'); 

$('input[name="user' + users[i].substr(1,1) + '"]').prop('checked', 'checked'); 

第二個是jQuery的1.6+

+0

嘿,我嘗試了第一種方法,但仍然沒有結果。該複選框未被檢查。第二個不能用,因爲我使用的是jQuery 1.4.4。 – doonot

0

當你想進行檢查的東西你必須做到以下幾點:

$('.myCheckbox').attr('checked','checked'); 
+0

嘿,沒有工作,複選框沒有被選中。 – doonot

+0

請確保你有正確的選擇器$('!your selector!')。attr('checked','checked); – 2013-07-05 16:04:14

+0

這正是問題所在,這就是我發佈這個問題的原因。如果你認爲選擇器是錯誤的,請告訴我正確的選擇,我會接受它作爲答案。 – doonot

0

如果您在方法中動態使用jQuery創建了複選框,因爲簡單函數將無法訪問這些元素。

+0

live已被棄用了數個世紀。 –

0

關於初始化複選框,我會建議這樣的事情:

$('input[type=checkbox]').each(function(index, box) { 
    $(box).attr('checked', $.inArray($(box).attr("id"), users) != -1); 
});