【问题标题】:How to display selected option from dropdown list如何从下拉列表中显示选定的选项
【发布时间】:2015-11-29 01:56:14
【问题描述】:

任务:

创建一个下拉列表,其中包含供用户选择的选项。当用户从下拉列表中选择一个选项时。将自动出现一个附加字段以显示用户选择的选项。

做了什么: 下拉列表已经创建,它显示了供用户选择的选项列表。我还设法在作为条件语句的一部分选择的选项中显示通过硬编码选择的选项。

问题: 我怎样才能允许条件语句从选择的下拉列表中读取,而不是我在值中硬编码。

代码:

下拉代码:

  <li class="bigfield">
                    <select name ="Agency" id="AgencyDetails" onchange = "return val(this.value);">
                    <option value ="0" selected = "selected"> Select Agency..</option>
                    <option value ="Name 1"> Name1</option>
                    <option value ="Name 2"> Name2</option>
                    <option value ="Name 3"> Name3</option>
                    <option value = "Others"> Others</option>
            </li>

条件语句查看选择了哪个选项:

<script>
function val(x) {
    document.getElementById("AddDiv").style.display = x == "Others" ? "block" : "none";
    document.getElementById("Name1").style.display = x == "Name 1" ? "block" : "none";
    document.getElementById("Name2").style.display = x == "Name 2" ? "block" : "none";
    document.getElementById("Name3").style.display = x == "Name 3" ? "block" : "none";
}
</script>

所选选项的硬编码视图:

<div  id = "Name1" style ="display:none">
            <li class ="bigfield"><input placeholder="Agent1" type="text" name="agentName" id="agentName" <?php echo 'value="Agency 1"'?> disabled="disabled"/></li>
            </div>
.....(identical for Name2 and Name3)

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    使用 jQuery,这非常简单。

    $('#AgencyDetails').on('change',function(){
        $('#result').html($(this).val());   
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <select name ="Agency" id="AgencyDetails">
       <option value ="0" selected = "selected"> Select Agency..</option>
       <option value ="Name 1"> Name1</option>
       <option value ="Name 2"> Name2</option>
       <option value ="Name 3"> Name3</option>
       <option value = "Others"> Others</option>
     </select>
    <div id="result"></div>

    上面的代码会像这样放在$(document).ready(..) 中:

    <script>
        $(function(){
           // above code here
        });
    </script>
    

    【讨论】:

    • 对不起,请问我把下面的代码放在哪里?
    • 答案已更新,但请阅读链接文档(并花一些时间在一般的 jQuery 文档上 - 这会有所帮助)
    • 感谢您的文档。已经了解
    • 想问一下我是否也可以使用var selectBox = form.fieldname; var selectedText = selectBox.options[selectBox.selectedIndex].text
    【解决方案2】:

    为简化代码,请尝试修改您的 HTML 并使 &lt;option&gt; 的值等于您希望使其可见的 id&lt;div&gt;

    $("div.result").hide();
    $("select#AgencyDetails").change(function(){
      var selectedVal = $(this).val();
      $("div.result").hide();
      $("div#"+selectedVal).show();
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <ul>
    <li class="bigfield">
      <select name ="Agency" id="AgencyDetails" ">
         <option value ="0" selected = "selected">Select Agency..</option>
         <option value ="Agency1"> Name1</option>
         <option value ="Agency2"> Name2</option>
         <option value ="Agency3"> Name3</option>
         <option value = "Others"> Others</option>
      </select>
    </li>
    </ul>
    <div class="result" id = "Agency1" style ="display:none;">
         <li class ="bigfield"><input placeholder="Agent1" type="text" name="agentName" id="agentName" disabled="disabled"/></li>
    </div>
                                                                                       
    <div  class="result" id = "Agency2" style ="display:none;">
         <li class ="bigfield"><input placeholder="Agent2" type="text" name="agentName" id="agentName" disabled="disabled"/></li>                                                         </div>
                                                                                       <div  class="result" id = "Agency3" style ="display:none;">
         <li class ="bigfield"><input placeholder="Agent3" type="text" name="agentName" id="agentName" disabled="disabled"/></li>
    </div>

    【讨论】:

      【解决方案3】:

      使用 jQuery eq()selectedIndex

      var details;
      var agencyChanged = function(e) {
        details.hide();
        var i = this.selectedIndex;
        if (0 === i) return;
        var toShow = details.eq(i)
        if (!toShow.length)
          toShow = details.eq(0);
        toShow.show();
      };
      $(function() {
        details = $('div.details');
        $('#AgencyDetails').on('change keyup', agencyChanged).trigger('change');
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      <select name="Agency" id="AgencyDetails">
        <option value="0">Select Agency..</option>
        <option value="Name 1">Name1</option>
        <option value="Name 2">Name2</option>
        <option value="Name 3">Name3</option>
        <option value="Others">Others</option>
      </select>
      <div id="AddDiv" class='details'>
        <li class="bigfield">
          <input placeholder="AddDiv" type="text" name="agentName" />
        </li>
      </div>
      <div id="Name1" class='details'>
        <li class="bigfield">
          <input placeholder="Name1" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>
      <div id="Name2" class='details'>
        <li class="bigfield">
          <input placeholder="Name2" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>
      <div id="Name3" class='details'>
        <li class="bigfield">
          <input placeholder="Name3" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>

      带有data属性:

      var details;
      var agencyChanged = function(e) {
        details.hide();
        var id = $(this).find(':selected').data('id');
        if (id) $('#' + id).show();
      };
      $(function() {
        details = $('div.details');
        $('#AgencyDetails').on('change keyup', agencyChanged).trigger('change');
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
      <select name="Agency" id="AgencyDetails">
        <option value="0">Select Agency..</option>
        <option value="Name 1" data-id="Name1">Name1</option>
        <option value="Name 2" data-id="Name2">Name2</option>
        <option value="Name 3" data-id="Name3">Name3</option>
        <option value="Others" data-id="AddDiv">Others</option>
      </select>
      <div id="AddDiv" class='details'>
        <li class="bigfield">
          <input placeholder="AddDiv" type="text" name="agentName" />
        </li>
      </div>
      <div id="Name1" class='details'>
        <li class="bigfield">
          <input placeholder="Name1" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>
      <div id="Name2" class='details'>
        <li class="bigfield">
          <input placeholder="Name2" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>
      <div id="Name3" class='details'>
        <li class="bigfield">
          <input placeholder="Name3" type="text" name="agentName" disabled="disabled" />
        </li>
      </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-13
        • 1970-01-01
        • 2020-07-10
        • 2018-03-01
        • 2017-03-08
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多