2017-08-12 92 views
0

我有多個複選框,通過驗證去..所以我需要的是被選出來留在那裏的複選框..添加需要的複選框舊值

這是其中的一些

    <div class="col-sm-3 col-xs-6 padding-4-tb"> 
         <input type="checkbox" name="skills[]" value="PHP"> PHP 
        </div> 
        <div class="col-sm-3 col-xs-6 padding-4-tb"> 
         <input type="checkbox" name="skills[]" value="Python"> Python 
        </div> 
        <div class="col-sm-3 col-xs-6 padding-4-tb"> 
         <input type="checkbox" name="skills[]" value="Ruby"> Ruby 
        </div> 
        <div class="col-sm-3 col-xs-6 padding-4-tb"> 
         <input type="checkbox" name="skills[]" value="Rails"> Rails 
        </div> 

你可以看到該值不包含數字..所以我該怎麼做呢?

+0

要留在哪裏?你的問題不清楚。 – Difster

+0

您是否在說如果表單提交中存在用戶錯誤,您希望表單在以前選擇並輸入的用戶信息驗證失敗後重新出現? – Justin

+0

繼續檢查形式 –

回答

1

您的問題並不完全清楚,但我認爲您提交的是表單,然後將驗證錯誤的表單重新發送出去,而且您不希望丟失用戶的選擇。如果你僅僅使用老派PHP和HTML在同一個文件,你會做這樣的事情:

<div class="col-sm-3 col-xs-6 padding-4-tb"> 
    <input type="checkbox" name="skills[]" value="PHP"<?php if(in_array('PHP', $skills))?> checked<?php } ?>> PHP 
</div> 
<div class="col-sm-3 col-xs-6 padding-4-tb"> 
    <input type="checkbox" name="skills[]" value="Python"<?php if(in_array('Python', $skills))?> checked<?php } ?>> Python 
</div> 
<div class="col-sm-3 col-xs-6 padding-4-tb"> 
    <input type="checkbox" name="skills[]" value="Ruby"<?php if(in_array('Ruby', $skills))?> checked<?php } ?>> Ruby 
</div> 
<div class="col-sm-3 col-xs-6 padding-4-tb"> 
    <input type="checkbox" name="skills[]" value="Rails"<?php if(in_array('Rails', $skills))?> checked<?php } ?>> Rails 
</div> 

淨是你需要在「選中」屬性添加到之前選擇的每個複選框。您可以通過檢查在提交時發送到服務器的技能值數組中是否存在值,來確定是否選擇了每個框。

+0

使用[ternary operator](http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison .ternary)而不是內聯 - 如果你只是想回顯一個短的字符串。 '<?= in_array('Rails',$技能)? 'checked':''?>' – Marwelln

+0

有些人認爲黃瓜口味更好。如果你正在展示一個概念,清晰度比簡潔更可取。 –

+0

我通常將邏輯從html中分離出來,這爲額外的變量提供了額外的清晰度。例如,'$ isPythonChecked'可以是'='''或'='checked'',具體取決於數值是否在'$ skills'數組中,該數組由PHP的其餘部分決定,未混入形成。 – Justin