表单与复选框输入字段,反之亦然-缺少第一个值

Form with checkboxs to input field and vice versa - missing first value

本文关键字:第一个 反之亦然 复选框 输入 字段 表单      更新时间:2023-09-26

我有一个小表单,其中我列出了一个数组$menu作为复选框。

使用jQuery(参见下面的脚本),然后我将复选框的值放入(最终隐藏的)输入字段。我知道这不是传统的方式,但我想把它们都存储为一个统一的值。

当再次加载表单(或提交后),我当然需要再次用存储为字符串(来自输入字段)的值填充这些字段。

我使用一个简单的strpos()和一个对"checked"的三元运算符。

我的问题是,在每次加载时,在列表中检查的第一个值将不会被确认,也不会被检查。总是first oneonly 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>

如果$pos是一个布尔值,表示一个字符串是否出现在另一个字符串中,您应该比较strpos()false的值:

$pos = strpos($opp_array['brsa_menu_list'], $find) !== false;

否则,如果$find出现在字符串的开头,strpos()返回0,在你的代码中相当于false