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更改值,则该值不存在。我尝试使用 ajax 和 php 传递下拉菜单值echo(空白)。在我看来,这就是为什么在页面重新加载后我看到默认值的原因。

所以问题是是否可以使用 javascript 以某种方式更改下拉框的值,该值存在于 php 中。

如果没有,那么我尝试使用 php,例如:如果未设置值,则回显必要的值(不是默认值)...

4

1 回答 1

1

Lets reduce the complexity here and remove some unnecessary usage of htmlspecialchars(). You dont need to do htmlspecialchars on the index of your array, you created it and it only has integers in it.

I have not had time to test this but I think it should do what you want! Hopefully.

<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 回答