参考这个基于下拉选项加载内容的PHP表单示例
解决方案 1,PHP
1) 索引形式
<form action="loadPage.php" method="POST" name="theForm" id="theForm">
<select form="theForm" name="selectedPage">
<option value="page_1">Page 1</option>
<option value="page_2">Page 2</option>
...
</select>
<input type="submit" value="Load page" />
</form>
2) 一个 PHP 处理程序
<?php
//loadPage.php
$requested_page = $_POST['selectedPage'];
switch($requested_page) {
case "page_1":
header("Location: page_1.php");
break;
case "page_2":
header("Location: page_2.php");
break;
default :
echo "No page was selected";
break;
}
?>
我只想这样做,而无需单击提交。我想通过单击下拉列表值来实现这一点,然后检查它是否等于 Php 文件中的值,如果是,则显示页面。
多谢。
按如下方式编写 html:
<select form="theForm" name="selectedPage" onchange="this.form.submit()">
<option value="page_1">Page 1</option>
<option value="page_2">Page 2</option>
</select>
这将在您选择选项时提交表单。
当您在下拉列表中选择一个选项时,这将导致"重定向":
将onchange
事件添加到select
以更改当前浏览器位置。
将选择选项值更改为页面的 URL。
(然后,您可以将 PHP 标头方向放在 loadPage.php
中。不再需要了。
<select form="theForm" name="selectedPage"
onchange="if (this.value) window.location.href=this.value">
<option value="page_1.php">Page 1</option>
<option value="page_2.php">Page 2</option>
</select>
Jay Blanchard在评论部分提出的问题的答案:
这可以在没有内联JavaScript的情况下完成吗(为了便于维护和重用)?
当然,这也是可能的。例如,使用 jQuery:
$('#SelectId').change(function() {
//alert( this.value ); // or $(this).val()
window.location.href = 'http://' + this.value;
});
请参阅 http://api.jquery.com/change
或者你可以与.on('change')
绑定
$('#SelectId').on('change', function() {
//alert( this.value ); // or $(this).val()
window.location.href = 'http://' + this.value;
});
你能在没有jQuery的情况下做到这一点吗?
当然,这也是可能的。您可以使用 document.getElementById()
选择元素,并使用 addEventListener
绑定事件处理。
window.onload = function() {
var select = document.getElementById('SelectId');
var handler = function() {
if(select.value) {
window.location.href = 'http://' + select.value;
}
};
select.addEventListener('change', handler, false);
};