我正在使用原型1.6.0.1。我試圖在單擊按鈕時選中所有複選框。此代碼適用於IE 6,但不適用於Firefox 3.我做錯了什麼?原型選擇所有複選框的代碼在IE中工作,但不是Firefox
<input class="submit" type="button" value="check all" onclick="$(this.form).getInputs('checkbox').each(function (elem) {elem.checked = true;});" />
我正在使用原型1.6.0.1。我試圖在單擊按鈕時選中所有複選框。此代碼適用於IE 6,但不適用於Firefox 3.我做錯了什麼?原型選擇所有複選框的代碼在IE中工作,但不是Firefox
<input class="submit" type="button" value="check all" onclick="$(this.form).getInputs('checkbox').each(function (elem) {elem.checked = true;});" />
什麼是你
$('MYFORMNAME')
更換
$(this.form)
?
窗體是輸入的父窗體,所以this.form應該沒有意義。使用ID選擇器或父代。
第二件事 - 聲明這個js爲文件加載分配動作,這種方式有點麻煩,從html中分離出js以便擁有乾淨靈活的代碼庫。
在jQuery中它會是某事像:
$(document).ready(function(){
$.('#submitId').click(function(){
// check the checkboxes
});
}
原型應該是相似的。
所有輸入元素都有一個this.form屬性,用於引用它們所屬的表單。 – 2009-04-16 00:14:33
我創建了一個非常基本的頁面來測試您的問題:
<html>
<head>
<script type="text/javascript" src="prototype-1.6.0.3.js" ></script>
</head>
<body>
<form>
<input type="checkbox" id="test1" /> Test 1<br/>
<input type="checkbox" id="test2" /> Test 2<br/>
<input type="checkbox" id="test3" /> Test 3<br/>
<input type="checkbox" id="test4" /> Test 4<br/>
<input class="submit" type="button" value="check all" onclick="$(this.form).getInputs('checkbox').each(function (elem) {elem.checked = true;});" />
</form>
</body>
</html>
&它工作正常,我在Firefox 3.0.8(以及IE)...
我同不同意其他答案... this.form應該沒問題(從提交按鈕中獲取表單對象,然後應該讓你通過getInputs從它獲取複選框)。
實際問題是什麼?什麼都沒有發生?如果是這樣,我唯一能想到的就是複選框與按鈕的形式相同嗎?
編輯:如果您的代碼實際上是一樣的它不工作上面&,我可以建議最好的是,你把你的onclick成propper函數調用&然後使用firebug制定出哪些特定位ISN沒有工作。即使你的代碼是這樣的:
<html>
<head>
<script type="text/javascript" src="prototype-1.6.0.3.js" ></script>
<script type="text/javascript" >
function checkAll(button) {
var form = $(button.form);
var inputs = form.getInputs('checkbox');
inputs.each(function (elem) {
elem.checked = true;
});
}
</script>
</head>
<body>
<form>
<input type="checkbox" /> Test 1<br/>
<input type="checkbox" /> Test 2<br/>
<input type="checkbox" /> Test 3<br/>
<input type="checkbox" /> Test 4<br/>
<input class="submit" type="button" value="check all" onclick="checkAll(this)" />
</form>
</body>
</html>
然後你就可以把破發點中的函數&確保「按鈕」,「形式」和「輸入」是你所期望的他們是和認爲「ELEM '在每個循環中也是如此。
你可以看到在這個環節的解決方案: http://www.ryboe.com/2008/07/10/select-all-checkboxes-with-prototype-js.html
如果您不想點擊,試試這個:
var form = $('options');
checkboxes = form.getInputs('checkbox');
checkboxes.each(function(e){ e.checked = 0 });
`this`應該在這種情況下指的是提交按鈕,所以我猜`this.form`不適合使用。我的直覺是= boj =是對的:) – 2009-04-13 20:48:44
我不同意......'this'應該是提交按鈕,所以'this.form'應該是表單(假設按鈕在表單內),它應該包含所有投入。 – Alconja 2009-04-14 01:13:40