更改"列表"值取决于另一个" list"的选定元素

时间:2015-04-11 20:07:23

标签: jquery html css jquery-selectors attr

我需要将几个数据列表添加到输入中,具体取决于另一个数据列表中的选定值。具体来说,如果用户选择宠物类型为“狗”或“猫”,我需要展示狗品种和猫品种:

<datalist id="animalTypes">
  <option value="Dog">
  <option value="Cat">
  <option value="Iguana">
  <option value="Snake">
  <option value="Hamster">
  </datalist>

  <datalist id="defaultbreedvar">
  <option value="Select a type">
  </datalist>

  <datalist id="dogvar">
  <option value="Pug">
  <option value="Labrador">
  <option value="Huskee">
  <option value="Golden Retreiver">
  <option value="Street dog">
  </datalist>

  <datalist id="catvar">
  <option value="Angora">
  <option value="Persian">
  <option value="Bombay">
  <option value="Shorthair">
  <option value="Street dog">
  </datalist>

在表单标记内,HTML如下所示:

<table>
          <tr>
            <td>Pet Type</td>
            <td><input  class="dropDown" name="petType" id="petType" list="animalTypes"  ></td>
          </tr>
          <tr>
            <td>Pet Type Variation</td>
            <td><input class="dropDown" name="petSubType" id="petSubType"  list="defaultbreedvar"  ></td>
          </tr>
          <tr>
            <td>Pet Name</td>
            <td><input type="text" name="petName" id="petName"></td>
          </tr>
        </table>

和选择显示哪个数据列表的jquery代码如下所示:

$(document).ready(function()
{
    function selectPetBreed()
    {
        var petType = $("#petType").attr("value");
        if (petType == "Dog"){
            $("#petSubType").attr("list","dogvar");
        };
        if (petType == "Cat"){
            $("#petSubType").attr("list","catvar");
        }

    };
    $(document).on("change, keyup", "#petType", selectPetBreed);
});

但这不会改变我显示的列表,它始终是硬编码的默认品种数据列表。谢谢!

1 个答案:

答案 0 :(得分:2)

FIDDLE HERE

变化

$(document).on("change, keyup", "#petType", selectPetBreed);

$('input').bind("change", selectPetBreed);

并更改

var petType = $("#petType").attr("value");

var petType = ("#petType").val();