【发布时间】:2013-04-18 02:07:15
【问题描述】:
我有一个小表单,其中我将数组 $menu 列为复选框。
使用 jQuery(参见下面的脚本)然后我将复选框的值放入(最终隐藏的)输入字段中。我知道这不是传统方式,但我想将它们全部存储为一个统一的值。
当再次加载表单时(或提交后),我当然需要使用存储为字符串的值(来自输入字段)再次填充这些字段。
我使用一个简单的strpos() 和一个三元运算符来表示"checked"。
我的问题是,在每次加载时,列表中检查的第一个值将不会被确认,也不会被检查。始终是 first one 和 only the first one (在列表中位于上方 - 我不是指 ABSOLUTE 第一个,而是第一个要检查的。保存字符串中的第一个。)。这意味着如果我显示输入字段(不隐藏),我可以看到字符串中的值,但复选框不是"checked"。
其他一切都运行良好....
也许只是我的眼睛累了,但我真的找不到问题所在:-)
任何意见将不胜感激..
global $menu;
$output = '';
for ($i = 1; $i <= 100; $i++){
if ($menu[$i][2]){
$find = $menu[$i][2];
$pos = strpos($opp_array['brsa_menu_list'], $find);
$output .= '</br><input class="checkbox remove_check" type="checkbox" ' .(($pos) ? ' checked ':'') . 'name="option1" value="' . $menu[$i][2] .'"> ' . $menu[$i][2] ;
}
}
echo '<b>Available menus : </b><br>' . $output .'<br>';
?>
<p>
<input class="regular-text" id="sbrsamenu_list" name="brsa_s[brsa_menu_list]" type="text" value="<?php echo $opp_array['brsa_menu_list']; ?>"/>
<label class="description" for="sbrsamenu_list">
</br><?php echo 'Please write the menu items'; ?>
</label>
</p>
和js
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(function() {
var $checkboxes = jQuery(".remove_check");
$checkboxes.on('change', function() {
var ids = $checkboxes.filter(':checked').map(function() {
return this.value;
}).get().join(' | ');
jQuery('#sbrsamenu_list').val(ids);
});
});
// ]]>
</script>
【问题讨论】:
-
我没有费心去详细研究这个问题(抱歉),但尝试将
for ($i = 1; $i <= 100; $i++)更改为for ($i = 0; $i <= 100; $i++)。它可能会有所帮助 -
@Kuro - 它没有.. :-)
标签: php javascript jquery forms checkbox