3

$menu配列をチェックボックスとしてリストする小さなフォームがあります。

jQuery を使用して (以下のスクリプトを参照)、チェックボックスの値を (最終的には非表示の) 入力フィールドに入力します。これが従来の方法ではないことはわかっていますが、それらすべてを単一の統一された値として保存したいと考えています。

フォームを再度ロードするとき(または送信後)、もちろん、これらのフィールドに文字列として保存された値(入力フィールドから)を再度入力する必要があります。

strpos()には三項演算子を使った単純なものを使用し"checked"ます。

私の問題は、ロードのたびに、リストでチェックされる最初の値が確認されず、チェックされないことです。常にfirst oneand only the first one(これはリストの上部にあります。and とは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>
4

1 に答える 1

3

がブール値であることが意図されている場合$pos、文字列が別の文字列に現れるかどうかを示す場合、値を と比較する必要がありstrpos()ますfalse

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

それ以外の場合、$find文字列の先頭にある場合は、コード内の which が と同等になるものをstrpos()返します。0false

于 2013-04-24T13:42:58.943 に答える