【问题标题】:How to fill input field automatically when name is selected from database?从数据库中选择名称时如何自动填充输入字段?
【发布时间】:2019-07-25 23:19:16
【问题描述】:

我有一个需要填写的表格,其中一个字段是员工姓名,我从名为 tbl_employee 的数据库表中选择了它的值,每个名称都有存储在同一个表中的代号,但是我有一个问题,因为我不知道要使用什么代码来自动填充名为代号的输入字段。以下是我的html代码

<div class="form-group">
 <label>Employee Name</label>
  <select name="employee" onchange="getEmp(this.value)" class="form-control">
    <option value="">Select Employee</option>
    <?php foreach($emps as $emp) : ?>
      <option value="<?php echo $emp["employee_id"]; ?>"><?php echo $emp["surname"] . ', ' . $emp["firstname"]; ?></option>
    <?php endforeach; ?>
  </select>
  <div class="help-block with-errors"></div>
</div>
<div class="form-group">
  <label>Code Name</label>
  <input class="form-control" name="codenamer" type="text"/>
  <div class="help-block with-errors"></div>
</div>

非常感谢您的回复

【问题讨论】:

  • &lt;input class="form-control" name="codenamer" type="text" value="&lt;?php echo $codename; ?&gt;"/&gt; 类似的东西
  • 您正在获取员工列表,我们如何知道选择或选择哪一个?
  • 现在你有 2 个解决方案,尝试它们并接受最好的一个。
  • @romain B. 感谢您的回复,我现在就试试这个

标签: javascript php sql ajax


【解决方案1】:

要给输入一个值,你可以给它添加“value”属性:

<input class="form-control" name="codenamer" type="text" value="<?php echo $emp["codename"]; ?>" />

【讨论】:

  • 目前无法使用,因为$emp 是在循环中定义的。但是,如果您忽略这一点,就是这样。
  • 我使用了这段代码,但它只显示一个值,而不是与员工关联的值
【解决方案2】:

你可以在这里使用 jQuery:

第一个option 值中的所有pass codename 列:

<select name="employee" onchange="getEmp(this.value)" class="form-control">
    <option value="">Select Employee</option>
    <?php foreach($emps as $emp) : ?>
    <option value="<?php echo $emp["codename "]; ?>"> // use codename column in value here.
        <?php echo $emp["surname"] . ', ' . $emp["firstname"]; ?>
    </option>
    <?php endforeach; ?>
</select>

第二,在你的输入框添加一个ID属性:

<input class="form-control" name="codenamer" type="text" id="codenamer" />

,您可以使用 jQuery 在您的输入字段上添加值:

<script type="text/javascript">
    function getEmp(codename){
        $("#codenamer").val(codename); // add value to codenamer field.
    }
</script>

【讨论】:

  • 先生,根据您的评论 // 在此处的值中使用代号列。我需要在该行添加什么吗?
  • @n-jay 只是您需要在输入字段中自动填充的值
  • 我使用了这一行 $("#codenamer").val($emp["codename"]);先生,这是正确的吗?
  • @N-Jay: 你不能在 jquery 中传递 php。
  • 试试我分享的@N-Jay
【解决方案3】:

如果您想在不重新加载页面的情况下执行此操作,则需要 Javascript。

首先,将代号添加到您使用 PHP 生成的选项属性中:

<option data-codename="<?= $emp['codename'] ?>" value="<?= $emp["employee_id"]; ?>"><?= $emp["surname"] . ', ' . $emp["firstname"]; ?></option>

然后在 JS 中,检查所选选项何时更改,从所选选项中提取代号并将其 data-codename 写入您的代号输入值。

类似这样的东西(使用 Jquery):

$('#employee-selector').change(function() {
    var selected = $(this).find('option:selected');

    var codename = selected.attr('data-codename');

    //if the above fails, you may have to use this: (note the [0])
    //var codename = selected[0].attr('data-codename');

    $('#codenamer').val(codename);
});

这要求您将id='employee-selector' 放在您的选择元素上,并将id='codenamer' 放在您的代号输入字段上。

【讨论】:

  • OP 现在空闲 :)
  • 非常感谢,我会尝试这里发布的所有代码。
  • @William 我使用了您的代码先生,但它会自动显示代号,但不会在员工姓名时关联代号。而且我不知道放在哪里(注意 [0],这会更好如果你告诉我具体该怎么做。
【解决方案4】:

这个问题已经解决了。我只是改写了上面给出的代码。

<script type="text/javascript">
    function getEmp(codename){
         var res = codename.split(" ", 1 );
        document.getElementById("codenamer").value=res;
    }
</script>

和我的输入字段的调用者

id="codenamer"

感谢所有受访者。

【讨论】:

  • 接受您的回答,这将有助于未来的访客,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多