基于HTML下拉选择填充输入

Populating Inputs Based on HTML Dropdown Selection

本文关键字:填充 输入 选择 HTML 基于      更新时间:2023-09-26

我知道在Stack Overflow上有很多这样的问题,但我真的需要一些与我正在做的事情更相关的东西…所以这就是为什么我张贴这个问题。

我有一个HTML表单与PHP,从一个MSSQL数据库中提取数据,以填充下拉框。一旦我从下拉框中选择了一个名字,我希望能够填充联系人信息文本框。到目前为止,如果我选择一个特定的供应商,供应商名称会自动输入到name、Email和Phone Number字段中。但是,我希望在文本字段中输入不同的属性,而不是供应商名称本身。我怎么能这么做?

我要导入的数据库中包含姓名、电子邮件和电话号码的字段命名为MR_POC_N、MR_POC_E和MR_POC_P

您看到的"MR_Name"是包含所有供应商名称的字段,仅供参考

下面是我的HTML下拉菜单代码:
<select name="vendor_dropdown" id="ven" onChange="updateinput();">
    <option value="">Choose a Vendor</option>
        <?php foreach($users->fetchAll() as $user): ?>
            <option><?php echo $user['MR_Name'];?></option>
        <?php endforeach; ?>
</select>

这是我的联系信息代码:

<table align="center">
    <tr>
        <td align="right">Name:</td>
        <td><input class="textbox" type="text" id="name" name="name"></td>
    </tr>
    <tr>
        <td align="right">Email:</td>
        <td><input class="textbox" type="email" id="email" name="email"></td>
    </tr>
    <tr>
        <td align="right">Phone Number:</td>
        <td><input class="textbox" type="tel" id="tel" name="number"></td>
    </tr>
</table>

这是我在JS中的更新输入函数。我知道这是关闭,但寻找某种方向,因为我不是最好的在JS:

function updateinput() {

    var e = document.getElementById("ven");
        var venSelected = e.options[e.selectedIndex].value;
        document.getElementById("name").value=venSelected;
        document.getElementById("email").value=venSelected;
        document.getElementById("tel").value=venSelected;
    }

保持你的脚本和现在一样,但是改变你的JavaScript和下拉菜单。在下拉菜单中尝试

<option value = "<?=$user['MR_Name'];?>"><?php echo $user['MR_Name'];?></option>

您想要发出所谓的AJAX请求。这将允许您转到另一个页面获取一些数据(在您的示例中,您将获取一些用户信息,并将其返回到该页面,而无需用户实际更改页面!

查看此链接了解更多关于AJAX的信息。

您的AJAX调用将看起来像这样。

function updateinput() {
    var e = $("#ven").val();
    $.ajax({
        url: "get-user-info.php",
        type: "POST",
        data: {e: e},
        success: function(data){
            data = JSON.parse(data);
            var email = data[0];
            var tel = data[1];
            $("#email").val(email);
            $("#tel").val(tel);
        }
    });
}

该脚本首先获取下拉列表的选定值。然后它开始进行AJAX调用,就像提交表单一样,我们将值发送到下一页。因此,AJAX将对话的页面是get-user-info.php,它从数据中发布值。数据通过e发送,这就是下拉值。成功后,它将执行下面的代码,将数据从PHP数组解析为JavaScript,然后说email是数组的第一个值tel是数组的第二个值。然后我们说ID为'email'的输入现在等于数组中的email, ID为'tel'的输入现在等于数组中的tel

你现在需要在同一个目录下创建一个名为get-user-info.php

的php脚本

在此脚本中调用数据库,其中用户与所选值e相同,并返回一个PHP数组,如下所示:

array(email, telephone)

这是你的PHP脚本get-user-info.php的伪代码:
<?php
$e = $_POST["e"];
//Do your SQL
//In the loop
$array[] = $user["email"];
$array[] = $user["tel"];
echo json_encode($array);
?>