无法在列表框中获取html事件

时间:2011-03-28 22:23:03

标签: html events listbox

我刚刚开始使用网络编程,因此我确定这是一个非常基本的错误 - 但我无法在html列表框中触发事件。这是我的test.html的全部内容:

<html><body>

<select name="drop1" id="Select1" size="4" multiple="multiple" onchange="alert('Click');">

    <option value="1" onselect="alert('Click');">item 1</option>

    <option value="2">item 2</option>

    <option value="3">item 3</option>

    <option value="4">item 4</option>

    <option value="0">All</option>

</select>

</body></html>

我得到相同的结果 - 当我点击列表中的任何项目时没有任何反应 - 当我输入php脚本的名称而不是&#39; alert&#39;时。我错过了什么?我已经搜索了一下,但没有找到任何东西。

编辑:事实证明这个问题(特别是&#39; alert&#39;)是特定于浏览器的。在Chrome中,您需要EmCo指出的javascript:前缀。但是在Firefox中,上面执行得很好。

3 个答案:

答案 0 :(得分:1)

您发布的代码适用于我,当alert()中的选择发生变化时,会显示JavaScript select。但是,我担心你在说什么:

  

当我输入 php脚本的名称而不是&#39; alert&#39;

两件事:

  1. 请告诉我们实际失败的代码。
  2. 你是如何调用一个&#34; PHP脚本&#34;来自HTML / JavaScript? PHP是一种服务器端技术,HTML和JavaScript是客户端的。你说你刚刚开始,所以听起来你正在遇到服务器和客户端之间的脱节,并且不确定如何继续。
  3. 不能以我怀疑你正在尝试的方式在浏览器中直接调用PHP函数。当页面传递到浏览器时,整个PHP脚本已经运行。您还剩下的是客户端(在浏览器中)的HTML和JavaScript。您可以使用JavaScript执行许多更高级的操作,包括甚至将AJAX调用回服务器资源(使用PHP编写,但同样只会发出客户端内容)并响应这些资源的输出。 / p>

    在选择select时,您最终想要做什么?

答案 1 :(得分:1)

正如我在上面的评论中所述,我认为您正在尝试重新创建已存在的功能。

当您Submit <form>时,所有已命名的元素及其值都会通过您action属性中的method属性发送到<form>属性中指定的页面1}}元素。

示例:

<小时/> 的 www.mysite.com/myform.html

<form action="myscript.php" method="POST">
    <select name="drop1[]" size="4" multiple="multiple">
        <option value="1">item 1</option>
        <option value="2">item 2</option>
        <option value="3">item 3</option>
        <option value="4">item 4</option>
        <option value="0">All</option>
    </select>
    <input type="submit" name="submit" value="Submit">
</form>

<小时/> 的 www.mysite.com/myscript.php

<?php
    if (isset($_POST['submit'])) {
        print_r($_POST);
    } else {
        echo 'No data!';
    }
?>

<小时/> 的输出:

Array
(
    [drop1] => Array
        (
            [0] => 2
            [1] => 4
        )

    [submit] => Submit
)

答案 2 :(得分:0)

您无法直接从客户端事件运行PHP脚本。

你需要的是AJAX,在更改下拉列表时触发AJAX请求到将调用所需PHP脚本的服务器。

然后,您可以阅读回复并根据它采取行动。