2014-07-02 56 views
2

我一直在尋找通過帖子試圖找到答案,但沒有任何運氣,所以希望有人能指出我在正確的方向。使用jquery檢查/取消選中輸入框

當我使用下面的代碼時,它會檢查所有輸入框,並取消選中它們。但是,如果再次點擊全部檢查,則不會檢查全部。這是爲什麼?

JQuery的

$('document').ready(function() { 
    $('.check_boxes').click(function() { 
     if ($(':checkbox').attr('checked')) { 
     $(':checkbox').attr('checked', false); 
     } else { 
     $(':checkbox').attr('checked', true); 
     }  
    }); 
}); 

HTML

<input type="checkbox" class="check_boxes" id="check_all" /> 
+0

嘗試使用'.prop'取代'.attr' – juvian

+0

確定這裏是您的演示http://jsfiddle.net/vhLMN/14 /你想在這裏做什麼? –

回答

1

試試這個:

JS

$('document').ready(function() { 
    $('.check_boxes').click(function() { 
     if ($('input:checkbox').prop('checked')) { 
     $('input:checkbox').prop('checked', true); 
     } else { 
     $('input:checkbox').prop('checked', false); 
     }  
    }); 
}); 

fiddle

+0

謝謝。如果其中一個輸入被檢查,檢查所有輸入仍然保持檢查:/ – user2998254

+0

我以爲你想要一個複選框檢查/取消全選。如我錯了請糾正我。 –

+0

是的,這是真的......只是認爲如果其中一個輸入未被選中,它將取消選中。我仍然在學習js。 – user2998254

0

我認爲你需要這個簡單的代碼:

$('document').ready(function() { 
$('.check_boxes').click(function() { 
    if ($(':checkbox').prop('checked')) { 
    $(':checkbox').prop('checked', true); 
    } else { 
    $(':checkbox').prop('checked', false); 
    }  
}); 
}); 
+0

這裏是演示http://jsfiddle.net/vhLMN/17/ –

+0

太棒了,謝謝!我並不太遠:)我之前嘗試過使用.prop(),並且它沒有按照代碼的方式工作。現在,如果其中一個輸入未選中,我將如何自動取消選中檢查所有輸入? – user2998254

+0

第3行也需要.prop,對嗎?否則,我的代碼不起作用。 – user2998254

0

實際上,一旦你點擊複選框,第一,如果總是tru。即因此,所有的checkebox都會被取消選中(包括您點擊的那個)。

我假設你想要的這種行爲: http://jsfiddle.net/vhLMN/18/

$('document').ready(function() { 
    $('.check_boxes').click(function() { 
     if (!this.checked) { 
     $('.flip_us :checkbox').attr('checked', false); 
     } else { 
     $('.flip_us :checkbox').attr('checked', true); 
     };  
    }); 
}); 

BTW。輸入上沒有label屬性。您應該修復此問題,除非您使用某個框架來創建實際的label標籤

+0

好聽,應該是'id ='謝謝! – user2998254

相關問題