0

つまり、ページのリロード後 (送信ボタンをクリック) に、javascript の変更されたドロップダウン ボックスの値を維持する必要があります。

ドロップダウンメニュー

最初にphp配列で値を作成します

$options_main = array( 
   1=>'= Equals', 
      '≠ Does not Equal', 
      '> Is greater than', 
      '≥ Is greater than or equal to', 
      '< Is less than', 
      '≤ Is less than or equal', 
      '∋ Contains', 
      '∌ Does not contain', 
      ' '
  );

次に、ボックスをドロップします(phpコード)

<select name="date_day_selector[]" id="record_date_day'. $counter. '" onchange="blank()">';

foreach ( $options_main as $i1=>$opt1 ) : 
    echo '<option value="' .htmlspecialchars($i1) .'"' .
          ((htmlspecialchars($i1) == 
              htmlspecialchars($_POST['date_day_selector'][$counter]))? 'selected' : "") .    
           '>'.htmlspecialchars($opt1) .'</option>';
endforeach;

echo '</select>';

<select name="date_month_selector[]" id="record_date_month'. $counter. '">';

foreach ( $options_main as $i1=>$opt1 ) : 
    echo '<option value="' .htmlspecialchars($i1) .'"' .((htmlspecialchars($i1) == 
          htmlspecialchars($_POST['date_month_selector'][$counter]))? 'selected' : "") .
          '>'. htmlspecialchars($opt1) .'</option>';
    endforeach;

echo '</select>';

手動で値を選択して送信ボタンをクリックすると、ページがリロードされ、値が保持されます。

ただし必要:id="record_date_day'. $counter. '"ユーザーが特定の値を選択すると、の値id="record_date_month'. $counter. '"が空白になります' '

Javascript は値を変更しますid="record_date_day'. $counter. '"

function blank() {
<?php
$counter = 0;
$counter_maximum = 2;
while ($counter < $counter_maximum){
?>
if ( (document.getElementById('record_date_day<?php echo $counter;?>').selectedIndex == 2) || (document.getElementById('record_date_day<?php echo $counter;?>').selectedIndex == 3)  || (document.getElementById('record_date_day<?php echo $counter;?>').selectedIndex == 4) || (document.getElementById('record_date_day<?php echo $counter;?>').selectedIndex == 5) ) {
document.getElementById('record_date_month<?php echo $counter;?>').selectedIndex=9;
document.getElementById('record_date_year<?php echo $counter;?>').selectedIndex=9;
}
<?php
$counter++;
}
?>
}

また、JavaScript が変更された場合、id="record_date_day'. $counter. '"送信ボタンをクリックした後、値の値は保持されません。

ページのリロード後 (送信ボタンをクリック) に javascript の変更された値を保持する方法はありますか?

更新 1

私が行った結論は次のとおりです。

ページのリロード後の php $_POST では、ページのリロードecho前に設定されたドロップダウン メニューの値が表示されます。

ユーザーがドロップダウン メニューの値を手動で設定した場合、値が存在します。

javascriptを変更した場合、値は存在しませんechoajax と phpなし (空白)でドロップダウン メニューの値を渡そうとしました。私の意見では、ページのリロード後にデフォルト値が表示されるのはそのためです。

したがって、質問は、javascript を使用してドロップダウン ボックスの値を、php に存在する何らかの方法で変更できるかどうかです。

そうでない場合は、次のようにphpを使用しようとします:値が設定されていない場合、必要な値をエコーし​​ます(デフォルト値ではありません)...

4

1 に答える 1

1

ここで複雑さを軽減し、htmlspecialchars() の不要な使用を削除しましょう。配列のインデックスで htmlspecialchars を実行する必要はありません。作成した配列には整数のみが含まれています。

私はこれをテストする時間がありませんでしたが、あなたが望むことをするべきだと思います! うまくいけば。

<select name="date_day_selector[]" id="record_date_day'. $counter. '" onchange="blank()">';

<?php
    foreach ( $options_main as $i1 => $opt1 ) : 
        $sel = $_POST['date_day_selector'][$counter] == $i1 ? 'selected="selected"' : '';
        echo '<option ' . $sel . ' value="' . $i1 .'">' . htmlspecialchars($opt1) . '</option>';
    endforeach;
?>

echo '</select>';

<select name="date_month_selector[]" id="record_date_month'. $counter. '">';

<?php
    foreach ( $options_main as $i1 => $opt1 ) : 
        $sel = $_POST['date_month_selector'][$counter] == $i1 ? 'selected="selected"' : '';
        echo '<option ' . $sel . ' value="' . $i1 .'">'. htmlspecialchars($opt1) . '</option>';
    endforeach;
?>

echo '</select>';
于 2013-07-03T15:32:26.733 に答える