如何链接HTML下拉列表

时间:2013-07-19 20:05:08

标签: php javascript html web

我基本上是在尝试编写一个PHP脚本,当下拉列表中选择了某个选项/值时,该脚本将显示一条消息。

这是用于澄清的html

 <select name="month">
 <option value="0">0</option>
<option value="1">January</option>
<option value="2">Febuary</option>
<option value="3">March</option>
<option value="4">April</option>
</select>

基本上,我希望PHP脚本在选择一个选项(例如第一个选项(January))时打印一个语句。

4 个答案:

答案 0 :(得分:2)

如果您希望在更改选择时执行操作,则需要一个客户端解决方案,如javascript,最好是jQuery。

PHP无法满足您的要求,它可以在提交表单时执行某些操作,但在更改选择时则不会。

http://api.jquery.com/change/

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

$(document).ready(function(){
    $("select").on("change", function(){
         alert("The value is " + $(this).val());
    });
});

当您的选择发生变化时,这将产生警报。

答案 1 :(得分:1)

它可能在客户端做得更好但是因为你想用PHP做,这是一个使用关联数组的简单解决方案:

<强> somefile.php

<?php 
$months = array(1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May',
    6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November',
    12 => 'December');

if(isset($_POST['sb'])){

$input = $_POST['month'];
echo "You selected ".$months[$input];

}
?>
<form action="" method="post">
<select name="month">
<option value="1">January</option>
<option value="2">Febuary</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>

</select>
<input type="submit" name="sb"/>
</form>

如果您想动态生成菜单,可以执行以下操作:

<?php
$curr_month = date("m");
$month = array (1=>"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$select = "<select name=\"month\">\n";
foreach ($month as $key => $val) {
    $select .= "\t<option val=\"".$key."\"";
    if ($key == $curr_month) {
        $select .= " selected=\"selected\">".$val."</option>\n";
    } else {
        $select .= ">".$val."</option>\n";
    }
}
$select .= "</select>";
echo $select;
?>

希望这有帮助!

答案 2 :(得分:0)

这不是可以用PHP完成的事情。 PHP在服务器端执行,这意味着一旦完成所有服务器端处理,它就会提供静态页面。要更改某些内容,必须将其提交回服务器并重新传送。

Javascript是你想要在这里使用的。查看Codecademy jQuery轨道,它对于确定如何以您想要的方式进行客户端工作非常有帮助。 http://www.codecademy.com/tracks/jquery

基本上你想要一个onchange="function()"属性用于select,它会调用一个javascript函数来在一个单独的区域中显示一条消息。

例如(不完全是你想要的,但说明了原则:

<script type="text/javascript">
    var changed = function() {
        alert("Value of select is now: " + event.target.value);
    };
</script>

<form action="index.php" method="POST"> 
  <select name="month" onchange="changed()">
    <option value="0">0</option>
    <option value="1">January</option>
    <option value="2">Febuary</option>
    <option value="3">March</option>
    <option value="4">April</option>
  </select>
</form>

答案 3 :(得分:-1)

如果你的html看起来像这样:

<form action="index.php" method="POST"> 
  <select name="month">
    <option value="0">0</option>
    <option value="1">January</option>
    <option value="2">Febuary</option>
    <option value="3">March</option>
    <option value="4">April</option>
  </select>
  <input type="submit" value="Select">
</form>

然后在你的index.php中:

echo "You selected " . $_POST['month'];