gpt4 book ai didi

javascript - 根据选择值添加/显示动态表单字段

转载 作者:可可西里 更新时间:2023-10-31 23:58:31 24 4
gpt4 key购买 nike

我正在使用 Jquery Mobile 创建一个弹出窗体,显示供用户选择的选择语句。我正在使用 ajax 使选择语句动态化。我已经获得要显示的数据并创建了一个新的选择语句。它似乎没有正确格式化。

Picture of The Form with before and After

Popup Form Code

<?php
$q = intval($_GET['q']);

include_once('session.php');
include_once('dbConnect.php');

$sql="SELECT Enrollment.c_id, Enrollment.s_id, users.f_name, users.l_name
FROM Enrollment
INNER JOIN users ON Enrollment.s_id = users.s_id
WHERE c_id=$q";

$result = mysqli_query($dbc, $sql);

echo "<label for='selectuser' class='select'>Select user:</label>";
echo "<select name='selectuser' id='selectuser' data-native-menu='false'>";
echo "<option>Choose Users:</option>";
echo "<option value='instructor'>All Instructors</option>";
echo "<option value='students'>All Students</option>";

while($row = mysqli_fetch_array($result))
{
$s_id = $row['s_id'];
$f_name = $row['f_name'];
$l_name = $row['l_name'];
echo "<option value='$s_id'>$f_name $l_name</option>";
}
echo "</select>";
?>

最佳答案

解决此问题的更简单方法如下:

HTML

首先,从一开始就将所有选择框放在 html 中:

<select name="selectclass" id="selectclass" data-native-menu="false">
<option value='default'>Select Class:</option>
<?php echo $allClassOptions; ?>
</select>
<select name="selectuser" id="selectuser" data-native-menu="false">
<option value='default'>Select User:</option>
<?php echo $allUsers; ?>
</select>

最好为没有 javascript 的用户提供替代方案(优雅降级)。

Javascript

然后,在您的 javascript 文件中,隐藏应该在开始时隐藏的输入字段。将事件处理程序绑定(bind)到第一个选择字段的更改事件,并使用 Ajax 调用填充第二个选择字段的选项字段。

var selectElement = $("#selectuser");
selectElement.hide();

$("#selectclass").on("change", function(){
var selectedClass = this.value;

if(selectedClass != "default"){
selectElement.show();

$.ajax({
type: "POST",
url: "getdatabaseresults.php",
data: {"class": selectedClass },
success: function(result){
//remove old options
selectElement.empty();

//add new options
selectElement.append(result);
}
});
};
});

PHP

在您的 PHP 文件中,处理 Ajax 调用并返回想要的结果:

<?php

if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest"){
//this is an Ajax call!

$selectedClass = $_POST["class"];
$options = "<option value='default'>Select User:</option>";

//do whatever you want with the data
//database calls and whatnot
$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE c_id = ?");
mysqli_stmt_bind_param($stmt, "s", $selectedClass);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $row);
while(mysqli_stmt_fetch($stmt)) {
$user = $row['username'];
$options.= "<option value='$user'>$user</option>";
}
mysqli_stmt_close($stmt);

echo $options;
}
?>

此 php 文件可以扩展(例如使用 switch()),因此它可以用于不同的 ajax 调用。

注意:有许多不同的方法可以实现这一点,这只是一个例子。

关于javascript - 根据选择值添加/显示动态表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22317136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com