我想創建一個復選框組并需要檢查一些復選框。
$user是所有“用戶”的串列。該方法$activity->users(u_id)檢查用戶是否“活躍”并回傳 1/0。但不管它回傳什么,如果我使用這個代碼,復選框總是被選中:
% $user->foreach( sub {
% my $checked = $activity->users($_[0]->u_id) ? 'checked' : '';
<span><%= check_box 'users' => $_[0]->u_id, checked => $checked %>
%= $_[0]
%= $checked
</span>
% });
不幸的是,該檔案沒有解釋它是如何正確的,我也沒有找到任何其他解釋它應該如何的站點。
uj5u.com熱心網友回復:
在 HTML 中,只要一個復選框(“復選框”我的意思是“復選框型別的輸入”)具有一個checked屬性,就會選中該復選框,而不管該checked屬性的值如何。
因此,如果您不希望選中復選框,則應在創建時不使用選中屬性。例如:
% if ($activity->users($_[0]->u_id)) {
<span><%= check_box 'users' => $_[0]->u_id, checked => 1 %>
% } else {
<span><%= check_box 'users' => $_[0]->u_id %>
% }
或者,更簡潔,重復更少,但在我看來可讀性較差:
% my $checked = $activity->users($_[0]->u_id);
<span><%= check_box 'users' => $_[0]->u_id, ($checked ? ('checked' => 1) : ()) %>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506243.html
