使用onchange函数时,选择列表忽略第一个值,PHP, JAVASCRIPT


Select list ignores first value when using the onchange function, PHP, JAVASCRIPT

我使用下面的选择列表函数来创建一个有5个值的选择列表。当我选择它们时,值2-5可以正常工作,当我选择它们时,它们会在页面上打印出它们的值,但值1无论如何都不会打印出来。我不知道我做错了什么,也不知道如何补救。请看看我的代码:

index.php

function limit($count,$location) {
echo "<form method = 'POST' action = '$location'>";
echo "<select name = 'value' onchange='this.form.submit()'>";
while ($tempCount < $count) {
$tempCount++;
echo "<option value='$tempCount'>$tempCount</option>";
}
echo "</select>";
echo "</form>";
}
limit(5,"index.php")
$value = $_POST['value'];
echo $value;

< select >添加一个first选项,并检查$_POST['value']是否存在。接下来是您的代码,其中两个更改由注释箭头指向(//<=====):

<?php
function limit($count,$location) {
echo "<form method = 'POST' action = '$location'>";
echo "<select name = 'value' onchange='this.form.submit()'>" .
     "<option>Select an option</option>";  // <===========================
while ($tempCount < $count) {
$tempCount++;
echo "<option value='$tempCount'>$tempCount</option>";
}
echo "</select>";
echo "</form>";
}
limit(5,"xyz.php");
if ( isSet( $_POST['value'] ) )   // <===========================
   { $value = $_POST['value'];
     echo $value;
   }
?>

选项"Select an option"将允许用户选择选项1。

如果你不希望看到"选择一个选项",另一种解决方案是让选择的选项被选中,例如,如果用户选择了"3",当页面重新加载时,选项"3"将被选中,用户将能够选择选项"1":

<?php
function limit($count,$location) {
echo "<form method = 'POST' action = '$location'>";
echo "<select name = 'value' onchange='this.form.submit()'>";
while ($tempCount < $count) {
$tempCount++;
// MAKE THE CURRENT OPTION SELECTED IF IT WAS CHOSEN BEFORE. <==========
if ( isSet( $_POST['value'] ) &&        // IF 'value' EXISTS, AND
   ( $_POST['value'] == $tempCount ) )  // IF 'value' == CURRENT NUMBER
     $selected = "selected";
else $selected = "";
echo "<option $selected value='$tempCount'>$tempCount</option>";
}
echo "</select>";
echo "</form>";
}
limit(5,"xyz.php");
if ( isSet( $_POST['value'] ) )   // <===========================
   { $value = $_POST['value'];
     echo $value;
   }
?>