我刚刚开始使用网络编程,因此我确定这是一个非常基本的错误 - 但我无法在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中,上面执行得很好。
答案 0 :(得分:1)
您发布的代码适用于我,当alert()
中的选择发生变化时,会显示JavaScript select
。但是,我担心你在说什么:
当我输入 php脚本的名称而不是&#39; alert&#39;
两件事:
不能以我怀疑你正在尝试的方式在浏览器中直接调用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脚本的服务器。
然后,您可以阅读回复并根据它采取行动。