我有一个用户配置文件表单,允许用户更改他们的地址,城市,州,zip。
下面的代码将show/hide如果国家不是美国或加利福尼亚州的states/provinces列表。
但是,如果用户已经具有存储在数据库中的此信息,则无法获取state/province来加载位置列表,并选择以前存储在数据库中的一个。当我选择隐藏state/province的不同国家/地区时,它只有效,然后选择我们。当我这样做时,那么存储在数据库中的状态也会被选中。
我对Javascript并不是很好,我相信这个问题是我只在选择国家时调用Ajax函数。如果该国已被选中,因为用户先前填写了表单,则不会发生Ajax调用。如何调用它的页面加载或国家的选择动作吗?
HTML.
profile.php
<div class="mb-3">
<label class="form-label mb-0 fw-bold" for="country"><small>Country/Region</small></label>
<select class="form-select" id="country" name="country">
<option value=""></option>
<?php include("/get_countries.php"); ?>
</select>
</div>
<div class="mb-3" id="stateShowHide" <?php if ($stateShowHide == "hide") { print("<style=\"display:none;\">"); } ?>>
<label class="form-label mb-0 fw-bold" for="state"><small>State/Province</small></label>
<select class="form-select" id="state" name="state">
</select>
</div>
javascript.
<script>
$(document).ready(function() {
$("#country").on('change', function() {
var selectedCountry = $("#country option:selected").val();
if ( this.value == "CA" || this.value == "US") {
$.ajax({
type: "GET",
url: "https://www.example.com/get_states.php?state=<?php print($state); ?>",
data: { country : selectedCountry }
}).done(function(data) {
$("#state").html(data);
});
$("#stateShowHide").show();
} else {
$("#stateShowHide").hide();
}
});
});
</script>
PHP.
get_states.php
if (isset($_GET["state"])) {
$state = check_input($_GET["state"]);
}
foreach ($rows as $row) {
print("<option value=\"" . $row["state"] . "\"");
if ($state == $row["state"]) {
print("selected");
}
print(">" . $row["state"] . "</option>\n");
}
截图
分析解答
这可以帮助你。
<script>
function onCountryChange(){
var selectedCountry = $("#country option:selected").val();
if (selectedCountry == "CA" || selectedCountry == "US") {
$.ajax({
type: "GET",
url: "https://www.example.com/get_states.php?state=<?php print($state); ?>",
data: { country : selectedCountry }
}).done(function(data) {
$("#state").html(data);
});
$("#stateShowHide").show();
} else {
$("#stateShowHide").hide();
}
}
$(document).ready(function() {
$("#country").on('change', onCountryChange);
});
</script>
<?php
if (isset($_GET["state"])) {
$state = check_input($_GET["state"]);
}
foreach ($rows as $row) {
print("<option value=\"" . $row["state"] . "\"");
if ($state == $row["state"]) {
print("selected");
}
print(">" . $row["state"] . "</option>\n");
}
echo '<script type="text/javascript">',
'onCountryChange();',
'</script>'
;
?>
完成您的Foreach后,请致电oncountrychange()