【问题标题】:Show div base on onchange from dropdown option, help根据下拉选项的onchange显示div,帮助
【发布时间】:2011-02-25 17:28:11
【问题描述】:

我尝试在<div> 中显示一些信息,如下所示:

    <div id="show_details" style="'display:block;' : 'display:none;'"> SHOW me
    </div>

通过从下拉选项中选择,例如

         <?php if ($books == 'art') { ?>
          <option value="art" selected="selected" id="art_indicator" onchange="(this.selected) ? $('#show_details').css('display','block') : $('#show_details').css('display','none');">Art</option>
          <?php } else { ?>
          <option value="art" id="art_indicator" onchange="(this.selected) ? $('#show_details').css('display','block') : $('#show_details').css('display','none');">Art</option>
          <?php } ?>

完整代码如下,

    <tr>
      <td>Book Option</td>
      <td>
      <select name="books">
        <?php  foreach ($others as $other) { ?>
          <?php if ($other == $other['other']) { ?>
          <option value="<?php echo $other['other']; ?>" selected="selected"><?php echo $other['title']; ?></option>
          <?php } else { ?>
          <option value="<?php echo $other['other']; ?>"><?php echo $other['title']; ?></option>
          <?php } ?>
          <?php } ?>

          <?php if ($books == 'art') { ?>
          <option value="art" selected="selected" id="art_indicator" onchange="(this.selected) ? $('#show_details').css('display','block') : $('#show_details').css('display','none');">Art</option>
          <?php } else { ?>
          <option value="art" id="art_indicator" onchange="(this.selected) ? $('#show_details').css('display','block') : $('#show_details').css('display','none');">Art</option>
          <?php } ?>
        </select></td>
    </tr>
    <div id="show_details" style="'display:block;' : 'display:none;'"> SHOW me
    </div>

有没有办法解决这个问题?

【问题讨论】:

  • 您是否只是想在选择任何内容时显示#show_details 的内容?还是它的内容应该根据选择的内容而改变?
  • @Michael 我正在尝试显示&lt;div&gt; #show_details 的内容,而&lt;option value="art" id="art_indicator"only 被选中,谢谢
  • !omc11 知道了 - 我相应地更新了我的答案。

标签: javascript css html show onchange


【解决方案1】:
<script type="text/javascript">

function showDiv()
{
  // hide any showing
  $(".details_div").each(function(){
      $(this).css('display','none');
  });

  // our target
  var target = "#details_" + $("#test_select").val();                                                                                                                                

  // does it exist?
  if( $(target).length > 0 )
  {
    // show it
    $(target).css('display','block');
  }
}

$(document).ready(function(){

  // bind it
  $("#test_select").change(function(){
    showDiv();
  });

  // run it automagically
  showDiv();
});


</script>
<style>
.details_div
{
  display:none;
}
</style>
{/literal}

<select id="test_select">
  <option value="">- Select - </option>
  <option value="book" selected="selected">Books</option>
  <option value="movie">Movie</option>
</select>

<div id="details_book" class="details_div">BOOK DETAILS</div>
<div id="details_movie" class="details_div">MOVIE DETAILS</div>

【讨论】:

  • @Josh,它看起来非常漂亮,而且细节更多,我很感激,所以我也会试试这个并带着报告来找你。谢谢
  • @omc11:没问题,您应该可以将它放到一个 .html 文件中并运行它,显然要确保在顶部包含 jQuery。一旦它工作,你可以将 PHP 包裹在骨架周围。请注意 div 有一个特定的命名约定。
  • @Josh,现在我有了结果,每当我转到 &lt;div id="details_book" class="details_div"&gt;BOOK DETAILS&lt;/div&gt; 时它都可以正常工作,但是当它被选中时(意味着在保存它然后刷新页面后)它消失了,我希望它出现选择时,谢谢
  • @omc11:我已经更新了,一定要确保你的 PHP 相应地填充了 selected="selected"。
【解决方案2】:

看起来你正在使用 jquery,所以我首先建议从 html / php 中删除所有 javascript 并将其放在单独的部分或文件中。

然后您可以简单地执行以下操作:

$("#art_indicator").change(function() {
  // do what you want to do  
});

另外,#show_details 的 html 似乎是错误的:

style="'display:block;' : 'display:none;'"

没有有效的样式声明。

【讨论】:

  • nah.. 这也许是我的错,但请让我知道style="'display:block;' : 'display:none;'" 的样式声明的coorect @ 谢谢
【解决方案3】:

我认为&lt;option&gt; 不会注册onchange 事件。您想要的是使用其父 &lt;select onchange=''&gt; 来定义更改事件。

<script type='text/javascript'>
  function selOnChange() {
    if ($('#selectList').value == "art" {
      $("#show_details").css('display', 'block');
    } else {
      $("#show_details").css('display', 'none');
    }
  }

现在您需要有一个默认的“未选择”选项。我这里有 value="-1" When the select list changes, if its value is the value of #art_indicator, the div will be shown.否则,不会显示 div。

<select id='selectList' name="books" onchange="selOnChange()">
  <option value="-1">Select something</option>
  <option id="#art_indicator" value="art">Art choice...</option>
  <?php // list all your other options ?>
</select>

【讨论】:

  • 谢谢你,我会先试试,有结果我会来的。
  • 是的...但是我想显示 div 内容的值是 art 而不是 -1,例如&lt;option value="art"&gt;Select something&lt;/option&gt;' so when ever i go to value='art'` 或者被选中,那么内容应该可见,否则不可见,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多