- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在第一个下拉列表中获取所选项目的值,因为在第二个下拉列表中,将显示的列表将取决于第一个下拉列表中的值。这是我的编码。顺便说一句,我正在使用 PHP。
在这里我显示区域列表,然后当区域已经被选择时,仅在该区域下的省份应该显示在第二个下拉列表中。
首先下拉:
<p><b>Region:</b>
<select class="w3-select" name="region" id="region_value"
onChange="myFunction()" required>
<option value="">--- Select Region ---</option>
<?php
$Region = $FormModel->RegionList();
foreach($Region as $RegionList) {
?>
<option id="option" value="<?php echo $RegionList['region_code']?>"><?php
echo $RegionList['region_name'] ?> </option> </p>
<?php } ?>
</select>
第二个下拉列表:
<p><b>Province:</b>
<select class="w3-select" name="province" id="demo" required>
<option value="">--- Select Province ---</option>
<?php
$Province = $FormModel->ProvinceList();
foreach($Province as $ProvinceList) {
?>
<option value="<?php echo $ProvinceList['prov_code']?>"> <?php echo
$ProvinceList['prov_name'] ?> </option> </p>
<?php } ?>
</select>
我这里有一个 java 脚本获取所选项目的值,但我不知道如何将它作为属性传递以将值设置为区域代码。我有一个 setter 和 getter,我将首先在其中设置区域代码,然后在我的查询中获取区域代码的值。但它不起作用。
<script>
function myFunction() {
var x = document.getElementById("region_value").value;
$FormModel = new Form(x);
}
</script>
这是我获取省份列表的查询。
public function ProvinceList(){
$region = $this->getRegion();
$sql = "SELECT prov_code,psgc_prv, prov_name FROM lib_provinces WHERE
region_code='$region' ORDER BY prov_name";
$this->openDB();
$this->prepareQuery($sql);
$result = $this->executeQuery();
$recordlist = array();
$trash = array_pop($recordlist);
foreach($result as $i=>$row){
$row_data = array(
"prov_code"=>$row["prov_code"],
"psgc_prv"=>$row["psgc_prv"],
"prov_name"=>$row["prov_name"]
);
$recordlist[$i] = $row_data;
}
$this->closeDB();
return $recordlist;
}
如果有人能在这项工作中回答我,我会很有帮助。谢谢!
最佳答案
如果一次获取所有省份是一个选项,您应该通过 javascript 执行此操作。
您需要将所有项目都放在一个 javascript 变量中,并用这些值填充您的选择。OnChange 你应该只使用适用的值来过滤值
<script>
var optionItems;
var values = <?php echo json_encode($ProvinceList) ?>;
refreshOptions(values);
function refreshOptions(listItems, x) {
x = x || 0;
var sel = document.getElementById('demo');
sel.innerHTML = "";
for(var i = 0; i < listItems.length; i++) {
if ((x == 0) || (listItems[i].psgc_prv == x)) {
var opt = document.createElement('option');
opt.innerHTML = listItems[i].prov_name;
opt.value = listItems[i].prov_code;
sel.appendChild(opt);
}
}
}
function myFunction() {
var x = document.getElementById("region_value").value;
refreshOptions(values, x);
}
</script>
第二个下拉菜单就是
<select class="w3-select" name="province" id="demo" required>
</select>
这意味着在对数据库的 php 查询中停止过滤
$sql = "SELECT prov_code,psgc_prv, prov_name FROM lib_provinces ORDER BY prov_name";
请参阅带有工作示例的 feedle(没有 php) https://fiddle.jshell.net/7k18euhw/3/
如果您有很多自治市,那么以与省份相同的方式获得所有自治市的方法并不是一个好主意。在这种情况下,您将需要使用 ajax 来获取它们。
这是你需要做的:
根据您使用 php 的方式,有很多方法可以做到这一点,例如,如果您有一个框架,您应该有一个 Controller ,只是 vainilla php 应该是这样的。
mun-list.php
echo json_encode($FormModel->ProvinceList($_GET['prov_id']));
Kaja 已经建议您应该使用 jquery 来执行此操作 (http://jquery.com/)
function onProvChange() {
var prov_id = $("#prov_select").val();
$.ajax({
url: 'mun-list.php?prov_id='+prov_id,
type: 'GET',
success: function(data) {
//without a lot of detail this should populate in the way you did before
refreshMunicipalities(data);
}
});
}
没有它你也可以做到,但更难,看看这篇文章。 How to make an AJAX call without jQuery?
关于javascript - 如何在不使用 $_POST 的情况下获取下拉列表中所选项目的值并传递它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37289482/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!