【问题标题】:select value of one dropdown based on another dropdown根据另一个下拉菜单选择一个下拉菜单的值
【发布时间】:2017-02-25 20:22:25
【问题描述】:

我有 2 个下拉列表-

1) 客户端 ID 的第一个下拉列表

2) 客户端名称的第二个下拉列表

我想要的是当用户选择客户端 ID 时,然后在另一个下拉列表中选择具有该选定 ID 的客户端名称。
我想要的第二件事如果用户选择客户端名称,那么在客户端 ID 下拉列表中应该选择客户端的客户端 ID。
到目前为止我做了什么 -

<select class="form-control" id="client_id">
    <?php
         while($c_id=mysql_fetch_array($client_id))
           {
              echo "<option>".$c_id['ID']."</option>"; 
           }
     ?>
 </select>

 <select class="form-control" id="client_name">
     <?php
         while($c_name=mysql_fetch_array($client_name))
            {
                echo "<option value='".$c_name['ID']."'>".$c_name['display_name']."</option>";
            }
      ?>
 </select>  

jquery -

$('#client_id').change(function(){
    //Client name should be select here base on selected id
}); 

$('#client_name').change(function(){
    //Client id should be select here base on selected client name
});  

请帮帮我。
谢谢。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

您需要以下代码:

$(function() {
    $('#client_id').change(function(){
        id = $( "#client_id option:selected" ).text();
        $("#client_name > option").each(function() {
            name = this.text;
            idFromName = name.replace(/(^\d+)(.+$)/i,'$1');
            if (id == idFromName){
                $('#client_name').val(name);
            }
                });
    });

    $('#client_name').change(function(){
        name = $( "#client_name option:selected" ).text();
        idFromName = name.replace(/(^\d+)(.+$)/i,'$1');
        $("#client_id > option").each(function() {
            id = this.text;
            if (id == idFromName){
                $('#client_id').val(idFromName);
            }
                });
    });
});

在上面的代码中,当clinet_id 下拉列表更改时,所选选项的id 保存在id 变量中。然后它遍历另一个下拉列表 (client_name) 的选项,并且对于每个选项,选项的文本都保存在变量 name 中。然后使用正则表达式(使用this)仅将文本中的id 保存在idFromName 变量中。如果ididFromName 相等,则将client_name 下拉列表更改为当前选择。使用相同的逻辑,当 client_name 下拉列表更改时也会发生这种情况。

你可以在这个JSFiddle中测试一下。

来源:

更新

这是一个完整的工作示例:

<select id="client_id">
<option>125</option>
<option>53</option>
<option>7</option>
</select>

<select id="client_name">
<option>125>asd</option>
<option>53>rty</option>
<option>7>ruu</option>
</select>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<script type="text/javascript">
$(function() {
    $('#client_id').change(function(){
        id = $( "#client_id option:selected" ).text();
        $("#client_name > option").each(function() {
            name = this.text;
            idFromName = name.replace(/(^\d+)(.+$)/i,'$1');
            if (id == idFromName){
                $('#client_name').val(name);
            }
                });
    });

    $('#client_name').change(function(){
        name = $( "#client_name option:selected" ).text();
        idFromName = name.replace(/(^\d+)(.+$)/i,'$1');
        $("#client_id > option").each(function() {
            id = this.text;
            if (id == idFromName){
                $('#client_id').val(idFromName);
            }
                });
    });
});
</script>

复制并粘贴此内容,然后对您的 ID 和名称进行调整。

【讨论】:

  • 我编辑了它。现在也不行吗?检查提供的 JSFiddle。
  • 我只是复制粘贴你的代码还是不行。
  • 查看我的更新。我把这段代码放在一个文件中,当我测试它时它可以工作。我不明白为什么它对你不起作用。 JSFiddle 有效吗?
猜你喜欢
  • 1970-01-01
  • 2022-11-17
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多